2009-06-02 37 views

回答

1

你可以創建一個新的列表嗎? IE:

List<myObject> foo = new List<myObject>(someClass.getReadOnlyList(...)) 

如果你一定要拿到名單業務邏輯,檢查,以確保有沒有一些其他的add()功能(insertaddappendprepend,等等)。某些類不允許您直接修改其內部集合,因爲他們更喜歡首先進行一些理智檢查,或者執行一些其他類型的工作來處理可能不應該向用戶公開的新數據。

0

據我所知,您不能以編程方式告訴您是否可以添加到可寫列表中。在另一方面,最常見的例子可能是Array - 所以你總是可以嘗試:

,因爲它似乎
if (list is Array) 
{ 
    // Copy to another list or whatever 
} 

技術含量低,我只是在業務層指示列表中,您將的屬性返回 - 無論是否可寫,等等。或者只是假定它不會被寫入,並且無論如何在UI中創建一個新列表。

+1

更一般地,您可以看到列表是否是非泛型System.Collections.IList接口的實例,如果是,請檢查IsFixedSize屬性。 – kvb 2009-06-24 18:03:38

0

如果您能控制業務邏輯(例如,它不是代碼生成的),那麼最簡單的解決方案可能是確保您使用的是不是固定大小的IList<T>實現(如List<T>) 。