【发布时间】:2012-12-26 15:33:44
【问题描述】:
我有以下服务类别:
public class JobService {
private UserService us;
public JobService (UserService us) {
this.us = us;
}
public void addJob(Job job) {
// needs to make a call to user service to update some user info
// similar dependency to the deleteUser method
}
}
public class UserService {
private JobService js;
public UserService(JobService js) {
this.js = js;
}
public void deleteUser(User u) {
using (TransactionScope scope = new TransactionScope()) {
List<IJob> jobs = jobService.findAllByUser(u.Id);
foreach (IJob job in jobs) {
js.deleteJob(job);
}
userDao.delete(user);
scope.Complete();
}
}
}
这些服务类中的每一个都由 IoC 容器实例化,并且没有功能问题,但在我看来,这种方法存在潜在的设计缺陷,我想知道是否有另一种方法可以使更有意义。
【问题讨论】:
-
这是我喜欢基于属性的 DI 而不是基于构造函数的 DI 的原因之一。
标签: c# dependency-injection inversion-of-control circular-dependency