У меня есть функция, которая принимает любой объект, затем он получает значения из свойств или полей, которые он имеет в качестве входных данных.
В настоящее время это выглядит так:
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.
В чем разница, когда речь идет о производительности, между двумя фреймворками (Reflection & ComponentModel). Будет ли переписывание вышеизложенного с использованием ComponentModel достичь лучшей производительности или гибкости? Единственное другое различие между этими двумя, которые я знаю, - это поддержка виртуальных свойств CM.
Ty.