将一个泛型参数约束为另一个泛型参数的子类型

本文关键字:泛型 参数 另一个 类型 参数约束 一个 | 更新日期: 2023-09-27 18:08:19

我正在尝试创建一个调用Unity来注册类型的直通方法。这是我要创建的方法的主体:

public static void RegisterType<T,U>()
{
    myContainer.RegisterType<T, U>();
}

myContainer属性是一个IUnityContainer。当我尝试构建这个时,我得到

类型'U'不能用作泛型类型或方法'Microsoft.Practices.Unity. unitycontainerextensions . registertype (Microsoft.Practices.Unity. registertype (Microsoft.Practices.Unity. registertype) ' to '的类型参数。unity container,参数为Microsoft.Practices.Unity.InjectionMember[])'。没有装箱转换或从'U'到'T'的类型参数转换。

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

将一个泛型参数约束为另一个泛型参数的子类型

这不行吗:

public static void RegisterType<T,U>() where U : T
{
    myContainer.RegisterType<T, U>();
}

?