我有一些基础对象“Car”,“dog”,“cat”他们实现了一个接口“IGWUIElement”。我有一个这些接口的列表:列出myList。
在运行时,我循环遍历我的元素列表,并通过检查类的名称(使用反射),我需要填充它们的属性 - 这不是界面的一部分)。我有一个xml文档描述了我应该分配给它们的属性和值。这是我的界面实例化。
IGWUIElement newUIElement = (IGWUIElement)Activator.CreateInstance(result);
如何使用特定值从名称中调用属性(请注意数据类型仅限于int和string)。每个对象都有不同的属性。
希望这是有道理的......
/ H4mm3r
答案 0 :(得分:5)
使用 PropertyInfo.SetValue()
PropertyInfo piInstance = typeof(IGWUIElement).GetProperty("property_name");
piInstance.SetValue(newUIElement, value, null);
更多关于msdn。
答案 1 :(得分:4)
你可以这样做:
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);