我有一个关于反思的问题。
我有一个名为Item的ComObject(NewItem-> Instance)。 (接口)
出于某种原因,我需要这个对象的一些属性。
var Item = typeof(IItem);
var props = Item.GetProperties();
foreach (var prop in props)
{
var property = Item.GetProperty(prop.Name);
var Propertytype = property.GetType().Name;
if (Propertytype == "RuntimePropertyInfo")
{
var method = property.GetGetMethod();
var spesific = method.Invoke(NewItem, null);// spesific has dynamic Members...
}
}
而且我不知道如何获得动态会员。 有一些课程涉及......所以我真的不知道该物业的位置" Spesific" // RuntimeProperty Info来自......
在Item Class中,没有像这样的Property。
通常情况下,我可以将特定实例化为对象本身。
具体 - > Method具有已定义对象的所有信息,如Matrix或Textfield ......这是ComObject本身。对象项包括根据放置的所有基本信息或其他一些标准方法...
有什么想法吗?
答案 0 :(得分:2)
为什么要尝试调用属性的get方法?
var method = property.GetGetMethod();
var spesific = method.Invoke(NewItem, null);// spesific has dynamic Members...
有一种更简单的方法:
object value = property.GetValue(NewItem);
假设NewItem
是实现IItem
答案 1 :(得分:0)
显然,COM对象的反应与其他类的反应略有不同。我之前没有尝试过对它们的反思,现在还没有任何代码让我的手指进行实验,但这里有一些可能有助于你找到正确方向的SO问题。
也许本文中的校长也会帮助您朝着正确的方向前进: https://support.microsoft.com/en-us/kb/320523