我有一个接口IDataStream和它的不同实现(即DataStream<T>
)。
我需要创建一个类DataStreamManager,它具有注册表功能(Find(Key)
),适用于所有数据流(意思是,注册表应包含参考DataStream<int>
, DataStream<SomeObject>
…),并且DataStreamManager必须是单例的。
您可以利用IDictionary<TKey, TValue>
实现此目的:
public sealed class DataStreamManager
{
var dataStreamsMap = new Dictionary<Type, IDataStream>
{
{ typeof(int), new DataStream<int>() }
}
public IDataStream Get<T>()
{
IDataStream dataStream = null;
Type key = typeof(T);
if (dataStreamsMap.Contains(key))
{
dataStream = dataStreamsMap[key];
}
return dataStream;
}
}
然后使用它:
var manager = new DataStreamManager();
var dataStream = manager.Get<int>();