各位大虾本人在开发中遇到一些问题如下:
  
   如何能根据属性名获得一个实例的属性,前提是类是动态加载的.  举例说明: 我有一个A类,类本身没有任何属性,他的所有属性都是在new的时候根据配置文件读取的,比如:
  A a1 = new A("123");  
  A a2 = new A("456");
  那么 a1 里可能能有5个属性 ,a2 里可能有3个属性,那么我如何能在代码中根据属性的名,获得属性并设置属性值呢.  如下代码是无效的:
  Type t = this.getType();
  t.GetProperties();
  这样的话 我一个属性也获得不了,因为以上代码是获得一个类的属性,而我要获得的是一个实例的属性,也就是说我并没有在类中定义属性,而是在new的时候创建的属性,每个实例属性内容不一样,我想要获得的是在内存中的那个实例的属性值.请教各位大虾了,任何帮助都不胜感激.

解决方案 »

  1.   

    把你在new时创建属性的地方再说清楚点比如:你是用匿名类吗?
      

  2.   

    不可能...强类型语言怎么可能让你在运行时随意更改类型声明...你需要换换思路,比如给A声明一个object或某接口或某基类的集合属性...至于动态加载就很简单了...
      

  3.   

    另外一点lz认识也不对, Type t = object.GetType();
     t.GetProperties();这个本来就是获得实例类型以及属性的,没有问题CLR知道运行时类型就算匿名类
    比如:var obj = new { Id = "1", Name = "2" };
    var type = obj.GetType();
    var pis = type.GetProperties(); //获得Id,Name