C#中动态添加类成员和属性
悠悠爸 2018-10-22 09:27:09 先向大神们问好.
我是用C# WinForm,我的需求是这样的:
需要从数据库里读出100万条数据,直接读到DataTable里会内存溢出.
但是我发现自定义一个类,添加对应字段的成员和get属性,用SqlDataReader逐条读取,按字段对应插入,然后存到List里,最后把这个List作为DataGrid的数据源就不会有问题,当然,如果量再大也会内存溢出.
我先尝试了用ExpandoObject,但是发现没有效果,值写进去了但是在表格里无法展现出来,应该是没有get属性去读取的原因.
后来用继承DynamicObject之后,验证了这个假设.
由于每次从数据库里读出来的字段是不确定的,所以无法预先创建类.
所以我想请教,能否动态创建,或对某个类的成员和属性进行添加或删除.
我是一名C#初学者,这只是我直观地猜想到的方法,或许还有更巧妙地方法,如果大神们知道,请一定要告诉我.
DataRow类是从DataTable的Rows.New()方法确定的字段,那么DataTable的Columns添加机制是什么,有没有大神解读一下?
或者GridView以IList或IListSource作为源,在渲染数据的时候原理是什么?
另外,这个需求是实实在在存在的,确实需要100万行数据,没有办法通过SQL或者业务逻辑或者业务场景进行优化.