【发布时间】:2014-01-16 17:17:31
【问题描述】:
这应该很容易,但几次都让我感到困惑。我正在尝试使用反射在类中设置值。
public class EngineeringValueClass<T> {
public T Value { get { } set { } }
}
然后在一个调用类中我有:
public class MyClass {
EngineeringValueClass<double> Value1;
EngineeringValueClass<double> Value2;
// Along with many others.
public void SetValueByName(object FieldName,object FieldValue) {
// Get the "Value" field of a generic EngineeringValueClass<double>
PropertyInfo MyValuePropRef =
typeof(EngineeringValueClass<double>).GetProperty("Value");
// Get the field within this class I want to set.
FieldInfo MyNameFieldRef = typeof(MyClass).GetField(FieldName.ToString());
MyValuePropRef.SetValue(MyNameFieldRef.GetValue,
FieldValue,
null);
}
}
我的目标是拥有
SetValueByName("Value1",2.3);
使用 set 访问器设置 Value1 的“值”。我认为我的问题是 MyNameFieldRef.GetValue 不返回对象引用,而是返回“值”,但我不知道如何解决这个问题。我不想传递“这个”,因为那也不对。
【问题讨论】:
标签: class reflection field