这里我发布了一些使用反射问题的代码。在按钮中单击我使用消息框来显示我的需求。如何在不使用property.i的情况下获取Name Value,以便使用反射。 [我能够使用财产获得]。在这里我收到一个错误“非静态方法需要一个目标。”请帮我纠正这个代码。提前谢谢
public class CustomProperty<T>
{
private T _value;
public CustomProperty(T val)
{
_value = val;
}
public T Value
{
get { return this._value; }
set { this._value = value; }
}
}
public class CustomPropertyAccess
{
public CustomProperty<string> Name = new CustomProperty<string>("cfgf");
public CustomProperty<int> Age = new CustomProperty<int>(0);
public CustomPropertyAccess() { }
}
private void button1_Click(object sender, EventArgs e)
{
CustomPropertyAccess CPA = new CustomPropertyAccess();
CPA.Name.Value = "lino";
CPA.Age.Value = 25;
MessageBox.Show(CPA.GetType().GetField("Name").FieldType.GetProperty("Value").GetValue(null , null).ToString());
}
答案 0 :(得分:2)
您必须在GetValue调用中传递对象(CPA)而不是null:
MessageBox.Show(CPA.GetType().GetField("Name").FieldType.GetProperty("Value").GetValue(CPA ,null).ToString());
或者它是第二个参数?不记得确切,所以你应该在MSDN中查看Property.GetValue的确切签名。