我有两种具有多对多关系的抽象类型:
public abstract class Experiment<T> where T : Sample
{
private List<T> _Samples = new List<T>;
public IReadOnlyCollection<T> Samples {
get { return _Samples.AsReadOnly(); }
}
public void AddSample(T sample)
{
_Samples.Add(sample);
sample.Experiments.Add(this); // The problem lies here
}
}
public abstract class Sample
{
private List<Experiment<Sample>> _Experiments = new List<Experiment<Sample>>;
public ICollection<Experiment<Sample>> Experiments {
get { return _Experiments; }
}
}
如您所见,一个实验接受一个类型参数,它是Sample
. 我要做的是:每当将 的子类型的实例Sample
添加到Experiment
时,Experiment
都应该相应地添加到 的Experiments
集合中Sample
。
当我尝试将一个实例添加Experiment<T>
到一个集合中时,问题就出现了List<Experiment<Sample>>
。由于T
是 的子类型Sample
,我假设不会有问题。实际发生的情况如下:
Value of type 'Experiment<T>' cannot be converted to 'Experiment<Sample>`
我的问题是是否有办法解决这个问题,或者更好地模拟这些实体之间的关系。