C# C中模板类型的注册表#

C# C中模板类型的注册表#,c#,templates,generics,stream,registry,C#,Templates,Generics,Stream,Registry,我有一个IDataStream接口和它的不同实现(即,DataStream) 我需要为所有数据流创建一个具有注册表功能(Find(Key))的类DataStreamManager,该类可直接用于所有数据流(也就是说,注册表应包含对DataStream,DataStream…)的引用),并且DataStreamManager必须是单例的 有人知道如何在C#中创建这样一个注册表吗 为此,您可以利用IDictionary: 问题是识别具体数据流的关键是什么 public sealed class Da

我有一个IDataStream接口和它的不同实现(即,
DataStream

我需要为所有数据流创建一个具有注册表功能(
Find(Key)
)的类DataStreamManager,该类可直接用于所有数据流(也就是说,注册表应包含对
DataStream
DataStream
…)的引用),并且DataStreamManager必须是单例的


有人知道如何在C#中创建这样一个注册表吗

为此,您可以利用
IDictionary

问题是识别具体数据流的关键是什么

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;
  }
}
公共密封类DataStreamManager
{
var datastreammap=新字典
{
{typeof(int),new DataStream()}
}
公共数据流获取()
{
IDataStream数据流=null;
类型键=类型(T);
if(datastreammap.Contains(key))
{
dataStream=datastreammap[key];
}
返回数据流;
}
}
然后使用它:

var manager = new DataStreamManager();
var dataStream = manager.Get<int>();
var-manager=newdatastreammanager();
var dataStream=manager.Get();