簡體   English   中英

沒有裝箱或類型參數轉換

[英]There is no boxing or type parameter conversion

我收到以下錯誤:

錯誤1類型“T”不能用作泛型類型或方法“ClassLibrary1.A”中的類型參數“T”。 從'T'到'ClassLibrary1.ALayer'沒有裝箱或類型參數轉換。

我正在嘗試應用泛型來實現帶有列表和繼承的動態多態。 我有以下類結構:

public abstract class ALayer
{
    public int Id { get; set; }
}

public abstract class A<T> where T: ALayer
{
    public List<T> Layers;
}

我在中產階級的聲明中得到了錯誤

public abstract class Middle<T>:A<T>
{
    public int middleAttr { get; set; }
}

這是我想要獲得動態多態性的第三層類

public class BLayer : ALayer
{
    public int Id { get; set; }
}

public class B:Middle<BLayer>
{
    public B() {
        this.Layers = new List<BLayer>();
    }
}

這個錯誤是什么?

任何幫助都感激不盡

答案我必須明確命名約束

public abstract class Middle<T>:A<T> where T: ALayer
{
    public int middleAttr { get; set; }
}

我必須在Middle類上明確命名約束

public abstract class Middle<T>:A<T> where T: ALayer
{
    public int middleAttr { get; set; }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM