<分区>
Possible Duplicate:
Casting List<T> - covariance/contravariance problem
我有如下定义的类
public abstract class AbstractDType
{
protected abstract string Num1 { get; set; }
protected abstract string Num2 { get; set; }
}
public class AD1 : AbstractDType
{
public string Num1 { get; set; }
public string Num2 { get; set; }
public string Num3 { get; set; }
}
public class AD2 : AbstractDType
{
public string Num1 { get; set; }
public string Num2 { get; set; }
public string Num3 { get; set; }
}
public abstract class DTypeStrategy
{
protected virtual List<AbstractDType> GetData()
{
return new List<AD1>();
}
}
我想在 GetData() 方法中返回 PD1(具体类型)列表。但是上面的代码抛出了一个转换错误。 List<AbstractDType>
无法转换为 List<PD1>
.如何修复此错误,以便我可以在 GetData 方法中返回具体内容。
还有其他继承自 DTypeStrategy 的派生类将实现 GetData(),如下所示:(我假设我也会在这里遇到相同的转换错误)
public class MyDraw : DTypeStrategy
{
public override List<AbstractDType> GetData()
{
return new List <AD2>();
}
}