通过反思获得动态成员

时间:2015-10-29 16:45:41

标签: c# visual-studio-2010 reflection

我有一个关于反思的问题。

我有一个名为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来自......

Propery after invoke Method

在Item Class中,没有像这样的Property。

通常情况下,我可以将特定实例化为对象本身。

具体 - > Method具有已定义对象的所有信息,如Matrix或Textfield ......这是ComObject本身。对象项包括根据放置的所有基本信息或其他一些标准方法...

这是项目本身 enter image description here

有什么想法吗?

2 个答案:

答案 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