【发布时间】:2012-12-17 09:57:56
【问题描述】:
IModificationRequst<Employee> req = new ModificationRequst();
Locator.Instance.GetService<IModificationRequstHandler<Employee>>().Handle(req);
我有一个服务定位器,它可以定位返回实现 IModificationRequstHandler 的对象实例的服务。
我试图将其修改为而不是返回一个 IModificationRequstHandler 实现者,它只是在内部找到服务并调用它的处理程序方法,所以上面的 2 行看起来像这样:
IModificationRequst<Employee> req = new ModificationRequst();
Locator.Instance.HandleRequest<IModificationRequst<Employee>>(req);
但是在使用泛型时遇到了困难,是否有一种已经建立的模式可以将请求重新分配给适当的请求处理程序并调用它们的处理,而不是获取一个处理程序然后从客户端调用它们的 Handle 方法?
【问题讨论】:
-
出于兴趣,你为什么不将 IModificationRequst
的实现注入到类中,而不是在方法中使用定位器。 -
@RobertSlaney :没有特殊原因。这就是现在的情况,一旦遇到这个问题,可能会很好地重构它。
-
如果你注入,这个问题就无效了!。你基本上是想实现命令模式
标签: c# generics service-locator