【问题标题】:Error in enum returning function in interface with generic type泛型接口中枚举返回函数出错
【发布时间】:2014-12-14 16:39:36
【问题描述】:

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

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 需要类型参数

我应该如何在界面中定义原型才能不出错?

【问题讨论】:

  • 这个错误在哪一行?

标签: c# generics interface enums


【解决方案1】:

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

Bank<string>.EType Type { get; }

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

Bank&lt;int&gt;.ETypeBank&lt;string&gt;.EType 类型是不同的类型,不能比较,所以你应该把它移到非泛型类或顶层:

public abstract class Bank
{
    public enum EType { Int, Gm, User };
}

public abstract class Bank<T> : Bank
{
}

【讨论】:

  • 感谢您的回答...实际上我不能使用基类(因为我已经使用了它,因为 lightmvvm 的 ObservableObject),但我只是创建了另一个“普通”类,其中的类型工作正常。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多