如题:
class Customer
{
     string name;
}
然后我想动态为Customer添加一个属性age;
变为:
class Customer
{
     string name;
     int age;
}
最后创建list自定义类型:
List<Customer> list=new List<Customer>();
datagridview.DataSource=list;
但一直没有想到合适的解决办法。

解决方案 »

  1.   

    做不到。如果是为了绑定时能自动显示新的属性,可以使用 DataTable动态添加列
      

  2.   


    没法动态,可以用匿名类变通一下 List<Customer> customerList = new List<Customer>();
              var src = (from c in customerList
                        select new
                            {
                                Name = c.Name,
                                Age = customerList.IndexOf(c),
                            }).ToList();
              datagridview.DataSource=src;
      

  3.   


    类的定义是静态的,类的属性是你写代码的时候用的,
    假设你动态从数据库取得数据,取得架构,知道有哪些字段并能修改了,然后呢?这些属性有什么用?你又不能在代码里动态写,而且即使作为动态语言,也只是在写代码的时候不考虑这个对象到底有哪些属性啊。所以还是用datatable吧
      

  4.   


    楼主可以看看还是像楼上所说,用datatable 比较好
      

  5.   

    c# 有一个特性是 Attribute标签  也就是 [属性]   通过定义属性与反射结合 可以很方便的给类动态增加属性且不回有耦合!
      

  6.   

    这是编码期的“动态”。用于绑定的动态属性可以通过PropertyDescriptor来做。
    可以参考6楼zengHD朋友提供链接的9楼和10楼。
      

  7.   

    每次需要的时候,从数据库中读取需要的字段,将这些字段写入一个 StringBuilder变量。这个变量就相当于一个class的内容。
    然后使用 CSharpCodeProvider将该内容编译,然后使用反射调用就可以了