4

目前我有一个安装程序,代码如下:

container.Register(Component.For<EntityListResolver<Unit>>()
         .ImplementedBy<EntityListResolver<Unit>>());
container.Register(Component.For<EntityResolver<Unit>>()
         .ImplementedBy<EntityResolver<Unit>>());

我想更改此注册,以便它自动解析我发送的任何类型,而不是Unit

如何更改我的注册以实现此目的?

4

2 回答 2

5

您可以使用开放泛型,例如:

container.Register(Component.For(typeof(EntityListResolver<>))()
         .ImplementedBy(typeof(EntityListResolver<>))());
于 2013-01-17T09:59:11.870 回答
0

如果您在编译时知道您的类型,则可以在通用函数中进行注册:

void Register<T>()
{
    container.Register(Component.For<EntityListResolver<T>>()
             .ImplementedBy<EntityListResolver<T>>());
    container.Register(Component.For<EntityResolver<T>>()
             .ImplementedBy<EntityResolver<T>>());
}

然后只需调用Register<Unit>();或您需要的任何类型。

于 2013-01-17T06:41:58.173 回答