我定义了一个类,如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...,请问该怎么实现?(不知道说明白没有,呵呵)谢谢!

解决方案 »

  1.   

    反射可以做到,但效率不是很高。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;}
        }
        ...
    }