我有一個IList<DerivedClass>
,我想投到ICollection<BaseClass>
,但是當我嘗試進行明確演員時,我得到了null
。有沒有可能做到這一點,而無需創建和填充新的集合?將一個通用集合投射到基類型
編輯: 因爲我只想從集合中讀取,我轉而使用泛型方法:
public void PopulateList<BaseClass>(ICollection<T> collection)
那麼我可以通過它的IList<DerivedClass>
。有沒有一種好的方法來緩存這個列表,以便在需要時可以刷新它。我的第一個傾向是使用:
Object cachedCollection;
Type cachedType;
public void PopulateList<BaseClass>(ICollection<T> collection) {
cachedCollection = collection;
cachedType = T;
// other stuff...
}
private void Refresh() {
PopulateList<cachedType>(cachedCollection as ICollection<cachedType>);
}
有沒有人有更好的方式做到這一點?
代碼示例會非常有幫助。沒有它,很難給你任何有用的答案。 – 2009-02-11 23:11:38