我有一个可以接受任何对象的函数,然后从其属性或字段中获取输入值。
目前它的代码如下:
private string GetFieldValue(object o, Field f)
{
//field.name is name of property or field
MemberInfo[] mi = o.GetType().GetMember(field.name, MemberTypes.Field | MemberTypes.Property,
BindingFlags.Instance | BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic |
BindingFlags.ExactBinding );
if (mi.Length == 0) throw new ArgumentException("Field", "Can't find member: " + f.name);
Object value;
if (mi[0].MemberType == MemberTypes.Property)
value = ((PropertyInfo)mi[0]).GetValue(o, null);
else value = ((FieldInfo)mi[0]).GetValue(o);
今天我阅读了关于System.ComponentModel及其XXXDescriptor类的内容。在性能方面,使用反射和ComponentModel这两个框架有何区别?如果使用ComponentModel重写上述内容,是否可以实现更好的性能或灵活性?我所知道的这两者之间唯一的其他区别是ComponentModel支持虚拟属性。谢谢。