Type.GetProperties of Microsoft.Office.Interop.Excel.Range returns 空数组

Type.GetProperties of Microsoft.Office.Interop.Excel.Range returns empty array

我想使用以下代码获取 Microsoft.Office.Interop.Excel.Range 接口的属性列表:

using Excel = Microsoft.Office.Interop.Excel;
PropertyInfo[] info = typeof(Excel.Range).GetProperties();

但结果是一个空数组:System.Reflection.PropertyInfo[0]

我是不是漏掉了什么?

从 VS2010 开始,当导入 Office 主互操作程序集 (PIA) 时,包含类型定义的默认机制是将它们作为主程序集的一部分而不是作为单独引用的库 (Dll) 嵌入。此嵌入过程的一部分是从嵌入定义中删除未引用的类型成员。

在 Solution Explorer 中,展开 References 节点和 select Interop.Microsoft.Office.Interop.Excel 然后 )右键单击)->Show Properties。你应该看到这样的东西:

将 "Embed Interop Types" 更改为 false,验证 "Copy Local" 也已自动更改为 True。对 "Interop.Microsoft.Office.Core" 和 "Interop.VBIDE" 执行相同的操作。

现在,当您反映托管包装互操作类型时,您将获得完整的类型定义。