2011-09-11 113 views
1

我正在尝试创建一个将调用Unity来注册类型的passthrough方法。这是我尝试创建的方法的主体:约束一个泛型参数是另一个的子类型

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

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

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

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

回答

7

不会在此工作:

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

+0

刚刚检查过。它编译没有任何错误你更快地回答:) – Samich

+1

@Samich:我也是这样。看起来像预期的那样工作 – zerkms

+0

不错!我只是认为这会有些困难。谢谢。 –

相关问题