我定义了一个类,如A,定义如下public class A
{
private int val1;
public int Val1
{
get { return val1;}
set { val1 = value;}
}
private string val2;
public string Val2
{
get { return val2;}
set { val2 = value;}
}
...
}我想通过另外一个类B获得A中某一个变量的值,但是这个变量名不是固定的,比如定义一个string变量key,如果key="Val1"则获取A对象中val1的值,如果key="Val2"则获得A对象val2的值,不用switch ... case...,请问该怎么实现?(不知道说明白没有,呵呵)谢谢!
{
private int val1;
public int Val1
{
get { return val1;}
set { val1 = value;}
}
private string val2;
public string Val2
{
get { return val2;}
set { val2 = value;}
}
...
}我想通过另外一个类B获得A中某一个变量的值,但是这个变量名不是固定的,比如定义一个string变量key,如果key="Val1"则获取A对象中val1的值,如果key="Val2"则获得A对象val2的值,不用switch ... case...,请问该怎么实现?(不知道说明白没有,呵呵)谢谢!
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;}
}
...
}