从Interop对象获取动态成员和SetValue

时间:2012-02-01 17:04:52

标签: c# reflection reflection.emit system.reflection

我将这个Interop对象作为System .__ ComObject出现,我想使用变量名设置值:

SetValue(fieldname) = fieldvalue;

我还需要检查动态成员以查看可用的内容。一些成员(以Ref结尾的成员)有子成员,所以我也需要向下钻取它们。

在调试中,动态成员如下所示。 (抱歉,我无法发布图片)

http://www.mezzodev.com/qintegrator/download/debug1.png

http://www.mezzodev.com/qintegrator/download/debug2.png

1 个答案:

答案 0 :(得分:2)

使用Impromptu Interface我能够收集动态成员:

var memberNames = Impromptu.GetMemberNames(customerAdd, dynamicOnly:true); 

然后我可以使用变量成员名称设置:

string optField = "Phone";
string optValue = "818-555-1212";
Impromptu.InvokeGet(customerAdd,  optField).SetValue(optValue);

一个大的“谢谢你!”致Impromptu Interface的开发人员为我回答这个问题。