使用反射从嵌套类中获取值

时间:2009-12-13 17:16:07

标签: c#-3.0

这里我发布了一些使用反射问题的代码。在按钮中单击我使用消息框来显示我的需求。如何在不使用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());
}

1 个答案:

答案 0 :(得分:2)

您必须在GetValue调用中传递对象(CPA)而不是null:

MessageBox.Show(CPA.GetType().GetField("Name").FieldType.GetProperty("Value").GetValue(CPA ,null).ToString());

或者它是第二个参数?不记得确切,所以你应该在MSDN中查看Property.GetValue的确切签名。