C# C中模板类型的注册表#
我有一个IDataStream接口和它的不同实现(即,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
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();