我有以下抽象类:继承和泛型C#
public abstract class PinkBoxMasksDataAbstract
{
public string PinkBoxText { get; set; }
}
和2子类:
public class PinkBoxMasksDataNoOverlay : PinkBoxMasksDataAbstract
{
}
public class PinkBoxMasksDataOverlay : PinkBoxMasksDataAbstract
{
public int PinkBoxLeft { get; set; }
public int PinkBoxBoxTop { get; set; }
public int PinkBoxHeight { get; set; }
public int PinkBoxWidth { get; set; }
}
然后我有另一个类,其具有PinkBoxMasksDataAbstract类作为参数:
public class ZonalMatchResult<T> where T : PinkBoxMasksDataAbstract
{
public decimal Confidence { get; set; }
public int GreenBoxLeft { get; set; }
public int GreenBoxTop { get; set; }
public int GreenBoxHeight { get; set; }
public int GreenBoxWidth { get; set; }
public List<T> PinkBoxMasksData { get; set; }
}
public class ZonalResult<T> where T : PinkBoxMasksDataAbstract
{
public int ExitCode { get; set; }
public string ErrorMessage { get; set; }
public int NumberOfGreenBoxMatches { get; set; }
public int NumberOfPinkBoxExtractFrames { get; set; }
public int ProcessingTime { get; set; }
public bool HasOverlay { get; set; }
public List<ZonalMatchResult<T>> MatchResults { get; set; }
}
现在我想用这种方式创建这个类:
ZonalResult<PinkBoxMasksDataAbstract> zonalResult;
if (isOverlayRequired)
zonalResult = new ZonalResult<PinkBoxMasksDataOverlay>();
else
zonalResult = new ZonalResult<PinkBoxMasksDataNoOverlay>();
,但我得到一个错误:
Cannot implicitly convert type
'Domain.ZonalResult<Domain.PinkBoxMasksDataOverlay>'
to'Domain.ZonalResult<Domain.PinkBoxMasksDataAbstract>'
为什么会发生,如果PinkBoxMasksDataOverlay是PinkBoxMasksDataAbstract的子类?怎么修?
创建一个不是泛型的'ZonalMatchResultBase'类,并从中继承'ZonalMatchResult',然后可以使用基类型来存储任何泛型实例。 –
Gusman
'ZonalMatchResult''和'ZonalMatchResult '除了'object'之外没有公共基类。类型参数的继承关系在这里没有任何影响;如果他们不同,他们是不同的。 –
@古斯曼,我有一个很深的孩子班。真的ZonalMatchResult只是嵌套类的链 –