[英]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.