Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 为什么存在Microsoft.Office.Interop.Outlook.Exception?_C#_.net_Outlook - Fatal编程技术网

C# 为什么存在Microsoft.Office.Interop.Outlook.Exception?

C# 为什么存在Microsoft.Office.Interop.Outlook.Exception?,c#,.net,outlook,C#,.net,Outlook,为什么microsoft的API团队在microsoft.Office.Interop.Outlook中重新创建与系统命名空间的异常类冲突的异常类 这是否与与与Office套件交互的非托管性质有关?为什么要使用它而不是System.Exception?这是Outlook COM库的Exception类周围自动生成的包装,表示定期约会的异常 Office PIA中的类型是围绕相应本机COM库的薄包装,不遵循标准的.Net约定;这就是为什么办公自动化在C#

为什么microsoft的API团队在microsoft.Office.Interop.Outlook中重新创建与系统命名空间的异常类冲突的异常类


这是否与与与Office套件交互的非托管性质有关?为什么要使用它而不是System.Exception?

这是Outlook COM库的
Exception
类周围自动生成的包装,表示定期约会的异常

Office PIA中的类型是围绕相应本机COM库的薄包装,不遵循标准的.Net约定;这就是为什么办公自动化在C#<4.0中如此烦人的原因

例如,集合类是复数的(例如,
Columns
而不是
ColumnCollection
),许多属性是参数化的(C#<4不支持),大多数方法参数是
ref object
s,许多事件与方法同名(例如,
Document.Close
in Word)

这使得C#中的办公自动化变得更加容易。

根据文档,它似乎是一个只读对象,您无法创建,但只能由内部Outlook代码抛出,因此我建议忽略它并使用普通的
异常
,但如果您正在创建约会,请准备处理
Outlook.Exception


因为它们位于不同的名称空间中,所以这实际上不是一个问题。

如果您使用Microsoft.Office.Interop.Outlook则任何对
异常的引用必须是
System.Exception
或者必须使用Exception=System.Exception声明
以便编译器知道您使用的是哪个异常类。@Malfist:是的,但这只是添加了一点额外的文本。否则,人们为使事情更清楚而对office interop库进行别名是很常见的,因此使用Outlook=Microsoft.office.interop.Outlook将是
然后在任何地方使用
Outlook.SomeClass
,确保没有任何东西会干扰您正在使用的框架名称空间。