2012-04-27 90 views
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>,因为这实际上是由第三方控制使用的。

编辑:我们需要在网格上进行更新。

我唯一能想到的就是用反射来制作课堂。

任何想法?

+0

也许像字典这样的东西会更合适? – Sven 2012-04-27 09:36:04

+0

返回类型无法更改。列表。字典不执行IList。 – 2012-04-27 09:43:41

+0

但是,你能否让列表中的每个对象都有一个带有列值的字典? – Sven 2012-04-27 09:45:29

回答

1

听起来就像您需要对列表中的对象实现ICustomTypeDescriptor一样。

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

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

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

这花了我一段时间才能找出第一次,因为它是一个有点复杂。它确实工作!

+0

它会允许在网格上编辑数据吗? – 2012-04-27 11:12:22

+0

@AseemGautam - 是的,我已经在一个项目中实施,网格将工作相同。它将尝试设置属性,并且您的实现将更新对象内的正确值。 – WraithNath 2012-04-27 12:14:32