【发布时间】:2012-02-12 04:59:38
【问题描述】:
我想知道我的思路是否正确,我主要针对接口进行编程,所以我想知道下面的类是应该通过 DI 注入还是我应该自己实例化一个类...
注意:这些服务保存在我的核心 libaray 中,而不是我的网络应用程序 (asp.net mvc)
//IUserSession 永远不知道,这取决于客户端应用程序,这永远不知道,所以我必须始终注入
//IWorkflowService我需要注入,因为客户端应用程序有几个不同的服务/包,这取决于业务规则可能会有所不同
//IReadonlySession 在我的应用中只有 1,所以我不需要注入?在其他客户端调用中可能会有所不同,但不太可能
//INotificationService 将永远是我所说的,它永远是一回事,所以我应该针对接口编程而不是注入?
private readonly IUserSession _userSession;
private readonly IReadOnlySession _readonlySession;
private readonly INotificationService _notificationService;
public Processor(IUserSession userSession, IWorkflowService workflowService)
: base(workflowService)
{
_userSession = userSession;
_readonlySession = new ReadonlySession();
_notificationService = new NotificationService();
}
//IReadonlySession 被注入,因为这可能会根据我是否正在运行测试而改变,我可能使用不同的数据库,或者我可能会从不同的客户端应用程序调用我的代码(不太可能但可能)
public Processor(IUserSession userSession, IWorkflowService workflowService, IReadonlySession readonlySession)
: base(workflowService)
{
_userSession = userSession;
_readonlySession = readonlySession;
_notificationService = new NotificationService();
}
问题:
我的对象实例化是否正确?我实施的方式是否正确?
【问题讨论】:
-
@MarkSeemann:更新...
标签: .net oop dependency-injection constructor constructor-injection