【发布时间】:2011-09-13 08:08:29
【问题描述】:
所以在我当前的代码中,我正在开发某种通知管理器。
这个想法是我的主要 BL 将在每个方法调用中使用这个通知管理器。因此可能只有一个通知管理器(我猜是单一的)。
当您使用通知管理器时,您可以通过 SMS\Email\Other 发送通知。实际发生的是通知管理器解析了一个“INotificationProvidor”,它也驻留在统一容器中。此解析是按名称完成的,如“SMS”、“Email”、“Other”。
这是一个小代码sn-p:
var notificationProvidor =
m_Container.Resolve<INotificationProvidor<TResult>>(
typeOfNotification.ToString());
ResultMessage<TResult> notificationResult = notificationProvidor
.SendNotification(source, destination, message, subject);
如您所见,通知管理器拥有一个容器实例来解析每个“INotificationProvidor”。
我怎样才能消除在通知管理器中保存容器的需要?有以下限制:
- 并非所有类型的“INotificationProvidor”(SMS、电子邮件、其他)都可以在容器中注册。
- 只有一个通知管理器。 (因为使用它的 BL 在申请过程中会处于活动状态,并且会从 DI 接收)
简而言之...解决每个方法调用的依赖关系。 :)
【问题讨论】:
标签: c# dependencies unity-container ioc-container