是否有一种方法可以访问基于通用类型ICollection
作为选择器的记录上的(T)
?
我有一个名为Job
的类,它具有大量ICollection
的答案。
public class Job
{
public ICollection<OperationAnswer> OperationAnswers { get; set; }
public ICollection<ElectricalAnswer> ElectricalAnswers { get; set; }
}
我希望能够根据传递给方法的通用类型参数ICollections
向这些答案(T)
添加项目。
当前,我必须执行if
语句来检查通用类型(T)
,然后手动访问正确的答案集合以添加新记录。这是一个例子。
if (typeof(T) == typeof(ElectricalAnswer))
{
job.ElectricalAnswers.Add(new ElectricalAnswer
{
});
}
else if (typeof(T) == typeof(OperationAnswer))
{
job.OperationAnswers.Add(new OperationAnswer
{
});
}
是否可以在AddToAnswerCollection
扩展方法知道要使用哪个答案集合的情况下执行类似的操作?
jobStageZone.AddToAnswerCollection<T>(new T
{
//properties
});
答案 0 :(得分:2)
或者...只需使用重载分辨率
public void AddAnswer(OperationAnswer answer)
=> OperationAnswers.Add(answer);
public void AddAnswer(ElectricalAnswer answer)
=> ElectricalAnswers.Add(answer);
或实现一个接口或低音类并将它们存储在同一列表中