2013-03-27 6 views
1

stoopid вопрос снова.C# templates Как я могу применить ограничения к классу, который происходит от чего-то?

У меня есть этот класс, который втягивает в какой-то код с помощью базового класса так:

class TVIRoot : OURTreeNodeImpl { } 

Теперь я хочу, чтобы добавить шаблон функциональность

class TVIRoot<TLabelHandler> : OURTreeNodeImpl { } 

Но я не могу разобраться, что вроде того, мне нужно собрать его, когда мне нужно предоставить некоторые ограничения.

class TVIRoot<TLabelHandler> where TLabelHandler : new(), OURTreeNodeImpl { } //no  
class TVIRoot<TLabelHandler> where TLabelHandler : SomeClass : OURTreeNodeImpl { } //no 
class TVIRoot<TLabelHandler> : OURTreeNodeImpl, where TLabelHandler : SomeClass { } //no 

Это можно сделать?

Большое спасибо.

Б.Г.

ответ

2
class TVIRoot<TLabelHandler> : OURTreeNodeImpl where TLabelHandler : SomeClass { } //yes 
0

Ограничение приходит после того, как базовый класс наследования, вот пример:

public interface IFood 
{ 
} 

public class Animal 
{ 
} 

public class Cat<T> : Animal where T : IFood 
{ 
    public void Eat(T food) 
    { 
    } 
} 

для более подробной проверки: http://msdn.microsoft.com/en-US/library/d5x73970(v=vs.80).aspx