我有一个接口IDataStream及其不同的实现(i.E. DataStream<T>
)。
我需要创建一个类DataStreamManager,它具有一个注册表功能(Find(Key)
),可用于所有可用的DataStream(意思是,注册表应该包含DataStream<int>
的引用,DataStream<SomeObject>
... ),DataStreamManager必须是单例。
有没有人知道如何在C#中创建这样的注册表?
答案 0 :(得分:0)
您可以将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>();