反射可以做到,但效率不是很高。
A a = new A();
Type t = a.GetType();
string strReturn = (string)t.InvokeMember( "Val1 ",
BindingFlags.DeclaredOnly |
BindingFlags.Public | BindingFlags.NonPublic |
BindingFlags.Instance | BindingFlags.GetProperty,
null,
a,
null);
还有一种办法就是对于A的私有属性声明,不用变量,而用一个Dictionary或者hashtable。这样你也能去到值。
public class A
{
private Hashtable _inner = new Hashtable();
public Hashtable InnerData
{
get
{
return _inner;
}
}
public int Val1
{
get { return _inner["Val1"];}
set { inner["Val1"] = value;}
}
private string val2;
public string Val2
{
get { return _inner["Val2"];}
set { inner["Val2"] = value;}
}
...
}