加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

C#中的反射不适用于COM(和C)

发布时间:2020-12-15 17:21:33 所属栏目:百科 来源:网络整理
导读:首先:我是初学者.在COM中. 我在大型项目团队中工作.服务器部分用C语言编写.客户端是用C#编写的.他们通过COM进行沟通. 现在 – 我在C#中有接口IA.我有对象o,其类型是A类(在C中实现IA – 它以某种方式通过COM传递).我想使用反射来获取该类型的所有属性,但它无
首先:我是初学者.在COM中.

我在大型项目团队中工作.服务器部分用C语言编写.客户端是用C#编写的.他们通过COM进行沟通.

现在 – 我在C#中有接口IA.我有对象o,其类型是A类(在C中实现IA – 它以某种方式通过COM传递).我想使用反射来获取该类型的所有属性,但它无法正常工作.它只返回我在代码中使用的那些属性.

以下是检索属性的Reflection代码:

Type[] ifaces = typeof(A).GetIterfaces();
foreach (Type iface in ifaces)
{
   foreach (PropertyInfo info in iface.GetProperties())
   {
       // it takes only those properties,I have used in C# code
   }
}

首先我认为它因COM而无效.但它很奇怪,它给了我所有属性,我在代码中提到. COM的所有内容都应该正确编写,因为它已经工作了很长时间(在我开始这个项目之前).

解决方法

这可能会对您有所帮助: Using Reflection with COM Interop

这只有在您知道属性名称的可能选项时才有用,如果您不知道但想要列出它们,则可能需要深入研究tlb文件.关于如何加载类型库并获取可以找到的AssemblyBuilder类的良好示例here. AssemblyBuilder.GetExportedTypes方法应返回TLB中定义的所有类型,然后您可以对这些类型使用反射.

我一直在努力解决这个问题,所以如果你开始工作,也许你可以在这里发布一个解决方案.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读