约束一个通用参数作为另一个的子类型

Bra*_*rby 1 c# generics

我正在尝试创建一个passthrough方法,它将调用Unity来注册一个类型.这是我尝试创建的方法的主体:

public static void RegisterType<T,U>()
{
    myContainer.RegisterType<T, U>();
}
Run Code Online (Sandbox Code Playgroud)

myContainer属性是IUnityContainer.当我试图建立这个,我得到

类型'U'不能在泛型类型或方法'Microsoft.Practices.Unity.UnityContainerExtensions.RegisterType(Microsoft.Practices.Unity.IUnityContainer,params Microsoft.Practices.Unity.InjectionMember [])中用作类型参数'TTo'. ".从"U"到"T"没有装箱转换或类型参数转换.

如何告诉编译器U确实实现了接口T?

zer*_*kms 7

这不会起作用:

public static void RegisterType<T,U>() where U : T
{
    myContainer.RegisterType<T, U>();
}
Run Code Online (Sandbox Code Playgroud)