2012-04-27 102 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