我想在一个类里面动态的添加一个属性,该怎么办

解决方案 »

  1.   

    C# 3.0 里提供了这种机制,可以为类添加属性或者方法,比如说为 String 添加一个方法
    namespace MyExtensionMethods
    {
        public static class MyExtensions
        {
            public static int MyGetLength(this System.String target)
            {
                return target.Length;
            }
        }
    }
    使用时,需要引入这个名字空间,引用如下:string str = "dafasdf";
    int len = str.MyGetLength();
    扩展方法的声明方式:
    1. 静态类,静态方法
    2. 第一个参数是目标类的一个实例,需要使用 this 关键字其他问题,请参考 .net 3.0 的特性。 (请使用vs2008)
      

  2.   

    我帮Peter再说一便吧:
    (这不是动态属性,)这是扩展方法
      

  3.   

    我认为可以这样实现,写一个基类 就是支持扩展属性的基类,里面有个list <object> 然后有个List <type> 定义每一个属性的类型, 再加一个 List<string>描述属性名
    然后写个方法,叫定义属性,可以为这几个list分别添加一个记录,
    然后让你的类集成这个类,然后取值的时候,可以直接调用基类的某个属性委托,看起来就像是取值了。至于实现方法,我没有时间写了!
    如果希望可用性更好,可以再写个Attribute 
    --------------------------
    欢迎关注我的博客