Вы можете использовать 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>();