簡體   English   中英

C#創建應用了泛型的對象字典

[英]C# creating a dictionary of objects with generics applied

我有一個這樣的類結構:

public class BaseDataType
{
    //... some properties
}


public class FirstCustomDataType : BaseDataType
{
    //...some more properties
}


public class SecondCustomDataType : BaseDataType
{
    //...some more properties
}


public interface IMonitor<T> where T : BaseDataType
{
    List<List<DataSample<T>>> GetData();
}


public abstract class GenericMonitor<T> : IMonitor<T> where T : BaseDataType 
{
    protected List<List<DataSample<T>>> Data { get; set; }

    public List<List<DataSample<T>>> GetData() { return Data; }
}


public class FirstNonGenericMonitor : GenericMonitor<FirstCustomDataType> { }


public class SecondNonGenericMonitor : GenericMonitor<SecondCustomDataType> { }

現在,我想擁有一個字典,它將容納我所有的非通用監視器:

Dictionary< ResourceToMonitorEnum, IMonitor<BaseDataType> > Monitors

但是,我不知道如何向該字典添加新的監視器,因為這是:

Monitors.Add( ResourceToMonitorEnum.Monitor1, new FirstNonGenericMonitor() )

我不會讓我添加新的FirstNonGenericMonitor作為IMonitor <T>,因為類型不匹配。 我知道這是類型問題,但我不知道如何解決。

您可以像這樣將FirstGenericMonitor實例轉換為IMonitor<BaseDataType>

Monitors.Add(ResourceToMonitorEnum, new FirstNonGenericMonitor() as IMonitor<BaseDataType>);

與M.kazem Akhgary的評論相呼應,這似乎是您在這里擁有的相當復雜的繼承模型。 值得考慮的是,是否確實需要所有這些功能,或者是否不必要地引入了復雜性。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM