【发布时间】:2013-01-22 01:04:22
【问题描述】:
这个例子是对实际问题的简化,但我怎样才能让它编译呢?我希望泛型约束能够传播。
既然 T 是一个 TClass 而 TClass 是一个类,为什么 T 不是一个类?
public class MyClass<TClass> where TClass : class
{
public void FuncA<Ta>() where Ta : class
{
}
public void FuncB<Tb>() where Tb : TClass
{
}
public void Func<T>()
where T : TClass
{
FuncA<T>();
FuncB<T>();
}
}
编辑:
这确实有效。 Eric Lippert 让我思考,谢谢。
由于 T 是一个 TClass,而 TClass 是一个 TAnotherType,所以 T 实际上是 TAnotherType。
public class MyClass<TClass, TAnotherType> where TClass : TAnotherType
{
public void FuncA<Ta>() where Ta : TClass
{
}
public void FuncB<Tb>() where Tb : TAnotherType
{
}
public void Func<T>()
where T : TClass
{
FuncA<T>();
FuncB<T>();
}
}
【问题讨论】: