2013-11-26 46 views
0

我有一個類ActiveList<T>: ObservableCollection<T>,我希望在與Type關鍵一本字典,這是ActiveListT,像存儲:如何使用T的不同類型存儲ObservableCollection <T>的集合?

Dictionary<Type, ActiveList<T>> 

當然字典不能類型化,因爲它應該照顧不同類型的T。它可以幫助,如果你知道T約束爲XTimeEntity,這樣我就可以考慮做詞典:

Dictionary<Type, ActiveList<XTimeEntity>> 

,但我怎麼會投一個ActiveList<XtimeEntity>ActiveList<T>時,我想Dictionary[T]

+1

'ActiveList '和'ActiveList '是不同的。所以你不能。你所能做的只是使用一個通用的非通用接口或者一個通用接口,它是協變的。 –

+0

@SriramSakthivel我知道我不能完全按照我所描述的來做。這就是我提出這個問題的全部原因。你能不能請建議一個合適的協變界面? – ProfK

回答

0

是否有一個界面所有ActiveLists共享?比你可以有一個Dictionary<Type, IActiveList>。但是你仍然需要投入收到的價值。

0

爲什麼不使用接口?

定義一個接口(IActive)來聲明你想實現的方法,然後實現它。

public class Acitve<T> : IActive 

將其添加到Dictionary<Type, IActive>

+0

我能來IObservableCollection(無類型)最接近的是: '公共接口IActiveList:INotifyCollectionChanged,INotifyPropertyChanged' 那些是兩個更改通知我來自'的ObservableCollection 獲得'的。 – ProfK

+0

是的,我的意思是聲明你想在外面調用的方法,並且你可以在方法中做所有事情。'public interface IActive {void Invoke(); }'如果你繼承了'ObservableCollection '類,你也可以調用屬於該類的方法。 – Teddy

相關問題