2014-12-14 5 views
1

Я думаю, что код говорит более полное описание:Ошибки в перечислении возвращение функции в интерфейсе с родовым типом

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; } } 
} 

я получаю ошибку:

Using the generic type PcgTools.Mmodel.Common.Synth.Bank requires type arguments

Как я должен определить прототип интерфейс для получения ошибок?

+0

На какой линии находится эта ошибка? – Stilgar

ответ

4

Как следует из соображений, класс Bank требует аргументов типа, которые вы не предоставили. Вы можете выбрать тип для T, например.

Bank<string>.EType Type { get; } 

, но это, вероятно, не то, что вы хотите, так как это будет противоречить цели создания Bank родовое в первую очередь.

Типы Bank<int>.EType и Bank<string>.EType различные типы и нельзя сравнивать, так что вы должны переместить его в необщий класс или к верхнему уровню:

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

public abstract class Bank<T> : Bank 
{ 
} 
+0

Спасибо за этот ответ ... на самом деле я не мог использовать базовый класс (поскольку я уже использовал его из-за объекта ObservableObject от lightmvvm), но я просто сделал еще один «нормальный» класс с типом в нем, который отлично работает. –