结构图扫描一个类以实现多个接口的问题

时间:2015-07-28 10:17:16

标签: generics interface structuremap

我正在实现一个带有请求处理程序的系统,其中有多个版本的请求。我有一个接口,IServiceRequestHandler,它处理请求T.因为有很多共享代码,我想组合不同版本的处理程序:

public class ARequestHandler : IServiceRequestHandler<V1.ARequest>, IServiceRequestHandler<V2.ARequest>

这实现了handle()方法的2个不同版本,这是该接口上唯一的方法。

但是,在我扫描时在我的structuremap注册表类中:

     Scan(a =>
     {
        a.TheCallingAssembly();
        a.AddAllTypesOf(typeof(IServiceRequestHandler<>));
     });

它将ARequestHandler注册为V1.ARequest的实例,但不是V2.ARequest。所以:

container.GetInstance<IServiceRequestHandler<V1.ARequest>>()

返回ARequestHandler,但是:

container.GetInstance<IServiceRequestHandler<V2.ARequest>>()

抛出异常,说没有实例存在。

我不一定需要它们返回相同的处理程序实例,但我希望它们至少返回相同处理程序类型的实例。我在这里错过了什么吗?

我知道我可以在注册表中使用单独的For行注册它们并且这样可行,但我会有很多处理程序,并且真的不想更新所有这些的注册表,这就是扫描方法的重点。

这似乎应该可行,但这可能只是扫描方法的限制。

0 个答案:

没有答案