繁体   English   中英

如何在实例化对象上使用反射调用方法?

[英]How to invoke method, using reflection, on instantiated object?

我有一些基础对象“ Car”,“ dog”,“ cat”,它们实现了接口“ IGWUIElement”。 我有这些接口的列表:列出myList。

在运行时,我遍历元素列表,并检查类的名称(使用反射),我需要填充其属性-这不是接口的一部分)。 我有一个xml文档,描述了属性和应分配给它们的值。 这是我的界面实例化。

IGWUIElement newUIElement = (IGWUIElement)Activator.CreateInstance(result);

如何从属性名称中使用特定值调用属性(请注意,数据类型仅限于int和string)。 每个对象都有不同的属性。

希望这有道理...

/ H4mm3r

使用PropertyInfo.SetValue()

PropertyInfo piInstance = typeof(IGWUIElement).GetProperty("property_name");
piInstance.SetValue(newUIElement, value, null);

有关msdn的更多信息。

您可以这样做:

IGWUIElement element = myList[0];

// Set a string property
element.GetType().InvokeMember("SomeStringProperty", BindingFlags.Instance | BindingFlags.Public | BindingFlags.SetProperty, Type.DefaultBinder, element, "The String Value");

// Set an int property
element.GetType().InvokeMember("SomeIntProperty", BindingFlags.Instance | BindingFlags.Public | BindingFlags.SetProperty, Type.DefaultBinder, element, 3);

暂无
暂无

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

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