在使用Office PIA时,如何处理System.Type.Missing或System.Reflection.Missing.Value?

18

我搜索了这些SO结果,但没有找到与我的问题相关的内容。 我怀疑这可能不是重复的。

我目前正在用.NET C#3.5编写Microsoft.Office.Interop.Excel PIA包装器,并想知道在调用诸如打开给定工作簿之类的方法时最好使用什么。

System.Type.MissingMissing.Value

我进行了一些Google搜索,发现除了一个来自于System命名空间(System.Type.Missing),另一个(Missing.Value)来自System.Reflection命名空间外,它们似乎没有任何区别。

  1. 两者的主要区别(如果有的话)是什么?
  2. 在什么情况下使用其中一个比使用另一个更好?
  3. 为什么会这样?

这两个似乎都用于将参数的默认值传递给交互程序集...

谢谢你的回答!=)

1个回答

20

它们是相同的。在 Type 的静态初始化器中,字段 Missing 被设置为 System.Reflection.Missing.Value

至于为什么有两种获取同一值的方式,谁知道呢。很可能这是一个向后兼容的残留物,因为 Type.Missing 被类型化为 object,而 Missing.Value 则被类型化为 Missing


你在哪里发现它们实际上是相同的,更有趣的是,你在哪里发现Type.Missing被设置为Missing.Value?谢谢!=) - Will Marcouiller
1
有一个非常棒的工具叫做Reflector :-) 它可以让你查看每个.NET程序集的(已编译)代码。但是你也可以尝试使用ILDASM(SDK的一部分)并查看Type的**.cctor**。这是第一条语句。 - Ruben

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接