2011-02-01 3 views
2

У меня есть не общий базовый класс с общим методом. Я хочу расширить этот метод, добавив дополнительный код, в то время как остальная часть метода должна оставаться неизменной, вызвав базу .methodВывести общий метод из универсального метода класса non-generic

здесь пример

public override List<T> MyMethod<T>() 
{ 

// do some work in here 
... 
// 

return base.MyMethod<T>(); // **I get an error here saying that T must be a reference type** 
} 
+0

Возможно, вы захотите указать язык в качестве тега; выглядит как C#, но я не уверен. – Pointy

+0

@pointy Я добавил тэг C# из-за того, что ключевое слово 'override' есть ... –

+0

это C# .net извините, вы, ребята, быстры. – Ivan

ответ

1

Я попытался это и он компилируется нормально:

public class Base 
{ 
    // Base method has a 'class' constraint 
    public virtual List<T> MyMethod<T>() where T : class 
    { 
     return new List<T>(); 
    } 
} 

public class Derived : Base 
{ 
    // Override does not declare any constraints; constraints are inherited 
    public override List<T> MyMethod<T>() 
    { 
     // base call works just fine 
     return base.MyMethod<T>(); 
    } 
} 

Ваша ошибка не в коде, который размещен. Это должно быть где-то в другом месте.

+0

Спасибо Timwi, мои плохие (корни Java) VIRTUAL не был указан в методе базового класса. – Ivan

+0

Теперь мне нужно выяснить, как обойти это ограничение :( – Ivan

+0

@Ivan: либо сделать базовый метод виртуальным, либо (если вы не можете) дать * вашему * методу другое имя (но такое же ограничение общего типа) , – Timwi

5

Похоже у вас есть ограничение класса на вашей базе метода. Вам просто нужно иметь такое же ограничение на переопределение

+0

Да, есть ограничение, но я не могу добавить свой собственный, потому что ограничения наследуются. – Ivan

+1

@Ivan, вам нужно указать одно и то же ограничение для вашего переопределения, ограничения неявно унаследованы. – Vadim

+0

Компилятор жалуется, что ограничения для переопределения наследуются от базового метода. – Ivan

Смежные вопросы