比如:有一个类对象A,已经有了2个属性。B1,B2.
在程序中使用的时候,A aa = new A()
并且给 aa.B1 = ""; aa.B2 = "" 赋值,在赋值的时候,我发现缺少了一个值,B3.现在想在程序中动态给A添加一个属性 B3,并且赋值 aa.B3 = ""; 如何处理? 是否可以实现?

解决方案 »

  1.   

    你可以继承class A, 然后赋予新的属性 B3.
    public class B:A
    {
      public B():base(){}
      public string B3
    {
      get;
      set;
    }
    }
    当你不确定你的A的class 在将来是否会有更多的属性的时候, 一般来说你可以做成和Control的tag属性的形式, 例如:
    public class A
    {
     public A(){}
     public object Tag
    {
      get;
      set;
    }
    }
      

  2.   

    运行中增加属性?? 感觉思路是不是有些问题?
    这样变通看行不行,加一个hashtable做为属性,你有多少东西,都可以丢进来,属性名作为key,值为value。
      

  3.   

    attribute 是用来给类添加额外、附加信息的。Property 是数据,是对象的状态
      

  4.   

    可以使用装饰者(decorator)模式来添加行为和属性。
      

  5.   

    呵呵,你们不了解一楼的意思……
    我也是因为这个需求才找到这里的,不过我还没有解决好,所以不能发表什么意见我想一楼把那东西做出来大家就会很惊奇吧,呵呵哦,我也在做,不过一楼都提了一月之久了,不知道做好没?
    有什么心得请联系我 [email protected] 共同探讨!
      

  6.   

    我搞定了,给这个类加个object属性,然后动态添加的属性均加到object属性当中,这样就OK了...
      

  7.   

    其实我找到这里是想找一种类似tooltip的那样一种功能。它可以给其他所有控件加下一个 “tooltip1上的tooltip1”属性
      

  8.   

    楼主,Javascript支持动态对对象添加属性,方法,C#我估计不支持,我也是来寻找看C#支持不支持这个功能的,呵呵
      

  9.   

    。net 4.0中说是可以来着 但似乎和用hastable 仿制的没什么两样
    并不能做到实时调用而且我敢说,如果有这种功能的话,将会很好用,比如,如果在做开发时,用户需要多添加一个信息这样,你就可以直接加进去,而不用考虑其它,当然,前提是,数据库必须是对象型数据库才可以