泛型类型接口中的枚举返回函数出错



我认为代码说的不仅仅是完整的描述:

public interface IBank
{
    Bank.EType Type { get; }
}

public abstract Bank<T>: ...
{
    public enum EType { Int, Gm, User };
    private EType _type;
    public EType Type { get { return _type; } }
}

我收到错误:

使用泛型类型 PcgTools.Mmodel.Common.Synth.Bank 需要类型参数

我应该如何在界面中定义原型才能没有错误?

正如错误所暗示的那样,Bank类需要您尚未提供的类型参数。您可以选择T类型,例如

Bank<string>.EType Type { get; }

但这可能不是你想要的,因为这会破坏首先使Bank通用的目的。

Bank<int>.ETypeBank<string>.EType的类型是不同的类型,无法进行比较,因此应将其移动到非泛型类或顶层:

public abstract class Bank
{
    public enum EType { Int, Gm, User };
}
public abstract class Bank<T> : Bank
{
}

最新更新