繁体   English   中英

通过反思获取动态成员

[英]Get dynamic members via reflection

我有一个反思的问题。

我有一个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类本身中,没有这样的属性。

以通常的方式,我可以实例化对象本身。

特定的->方法具有已定义对象(如矩阵或文本字段)的所有信息...这就是ComObject本身。 对象Item包含根据放置或其他诸如某些标准方法之类的所有基本信息。

这是物品本身 在此处输入图片说明

有任何想法吗?

为什么要尝试调用属性的get方法?

var method = property.GetGetMethod();
var spesific = method.Invoke(NewItem, null);// spesific has dynamic Members...

有一个更简单的方法:

object value = property.GetValue(NewItem);

假设NewItem是实现IItem的类的实例

显然,COM对象对反射的响应与其他类有所不同。 我以前没有尝试过对它们进行反射,并且目前没有任何代码可以尝试进行尝试,但是这里有一些SO问题可能有助于您朝正确的方向发展。

也许这篇文章的原理也可以帮助您朝正确的方向前进: https : //support.microsoft.com/en-us/kb/320523

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM