我遇到的情况是我在自定义域服务中访问存储库,我更愿意将它们注入。
即
[EnableClientAccess()]
public class UserDomainService : DomainService
{
public IUserRepository repo;
public UserDomainService(IUserRepository userRepo)
: base()
{
repo = userRepo;
}
public IEnumerable<User> GetUsers()
{
return this.repo.GetUsers();
}
我有很多域服务,我不确定在哪里定义一个Ninject模块来保存我所有域服务的类型绑定并将其加载到内核中。我正在寻找一个简单的例子来演示我如何做到这一点。
答案 0 :(得分:0)
我正在使用Ninject.Extensions.Web进行正确的跟踪 - 扩展NinjectHttpApplication以代替默认的Global.asax。
但是,它不起作用,因为它不公开KernelContainer(访问新定义的Ninject模块),这样就无法像使用页面基础那样注入自定义域服务它提供的课程。
因此...
我最终创建了一个类似的类,扩展了HttpApplication,公开暴露了静态内核。然后,我创建了一个基本域服务,我的所有域服务都继承自该服务。在构造函数中,然后我调用我的域服务实例:
[EnableClientAccess()]
public class BaseDomainService : DomainService
{
public BaseDomainService()
: base()
{
MyCustomStaticKernelContainer.Inject(this);
}
}