这个例子是对真正问题的简化,但我怎样才能编译它呢?我希望泛型约束能够传播.
由于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>();
}
}
Run Code Online (Sandbox Code Playgroud)
编辑:
这实际上有效.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
{ …Run Code Online (Sandbox Code Playgroud)