我有以下抽象類:繼承和泛型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只是嵌套類的鏈 –