我有这个类通过基类提取一些代码,如下所示:
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
可以这样做吗?
非常感谢。
BG
答案 0 :(得分:2)
class TVIRoot<TLabelHandler> : OURTreeNodeImpl where TLabelHandler : SomeClass { } //yes
答案 1 :(得分: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