小编Man*_*ish的帖子

Unity registerType中泛型参数的多态分辨率

我正在尝试执行以下操作并失败:

class base {}

class derived1 : base {}

class derived2 : base {}

interface itr<t>
where t : class, base
{}

class c1: itr<derived1>
{}

class c2 : itr<derived2>
{}  
Run Code Online (Sandbox Code Playgroud)

//以下2个注册失败:

_unityContainer.RegisterType<itr<base>, c1>("c1");

_unityContainer.RegisterType<itr<base>, c2>("c2");
Run Code Online (Sandbox Code Playgroud)

我得到的错误是上述注册中的第二个参数不能被类型转换为第一个参数,并且该注册无效.有关如何做到这一点的任何建议?
我需要执行上述操作,而不是使用derived1或derived2类作为通用参数进行注册,因为在解析时我不想知道我正在解析的确切派生类型.我只想多态地使用基类型方法.

c# generics inversion-of-control unity-container

3
推荐指数
1
解决办法
722
查看次数