在运行时创建成员的类

时间:2012-04-27 08:43:05

标签: c# winforms .net-2.0

我们有一个方法,它返回当前显示在网格中的行。

public override List<object> GetData(int startIndex, int endIndex, string[] rowSortBy, bool[] rowAscSortOrder, 
                   string[] rowGroupByOperations, string rowFilterExpression, ref int rowCount)        
    {

          List<A> list =  new List<A>();
          .. logic..

          return list;        
    }

问题是,现在网格列动态,它们会根据某些条件不断变化。这意味着我们不能使用类型化的类,因为数据成员是动态的。另外,我们无法更改List<object>方法的返回类型GetData,因为这实际上是由第三方控件使用的。

修改:我们需要对网格进行更新。

我能想到的唯一方法是使用反射来上课。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

听起来你需要在列表中的对象上实现ICustomTypeDescriptor。

这样就可以请求一个属性,您可以在运行时使用新属性返回相关数据。

http://wraithnath.blogspot.co.uk/2011/01/implementing-icustomtypedescriptor-for.html

http://msdn.microsoft.com/en-us/magazine/cc163816.aspx

我花了一段时间才弄清楚它是第一次,因为它有点复杂。它确实有效!