2011-09-20 8 views
0

인터페이스 IDataStream 및 그 구현이 다릅니다 (i.E. DataStream<T>).C#에서 템플릿 형식의 레지스트리

내가 모든 cuttently 가능한 데이터 스트림에 대한 레지스트리 기능 (Find(Key))가있는 클래스 DataStreamManager 확인해야합니다 (의미, 레지스트리 DataStream<int>, DataStream<SomeObject> ...에 심판을 포함한다) 및 DataStreamManager는 싱글해야합니다.

누구나 C#에서 그런 레지스트리를 만드는 방법을 알고 있습니까?

답변

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>(); 
관련 문제