Niaject with Ria Services(Custom DomainService)

时间:2011-02-28 03:16:09

标签: .net dependency-injection ninject wcf-ria-services

我遇到的情况是我在自定义域服务中访问存储库,我更愿意将它们注​​入。

    [EnableClientAccess()]
    public class UserDomainService : DomainService
    {

    public IUserRepository repo;

    public UserDomainService(IUserRepository userRepo)
        : base()
    {
       repo = userRepo;            
    }

    public IEnumerable<User> GetUsers()
    {
        return this.repo.GetUsers();
    }

我有很多域服务,我不确定在哪里定义一个Ninject模块来保存我所有域服务的类型绑定并将其加载到内核中。我正在寻找一个简单的例子来演示我如何做到这一点。

1 个答案:

答案 0 :(得分:0)

我正在使用Ninject.Extensions.Web进行正确的跟踪 - 扩展NinjectHttpApplication以代替默认的Global.asax。

但是,它不起作用,因为它公开KernelContainer(访问新定义的Ninject模块),这样就无法像使用页面基础那样注入自定义域服务它提供的课程。

因此...

我最终创建了一个类似的类,扩展了HttpApplication,公开暴露了静态内核。然后,我创建了一个基本域服务,我的所有域服务都继承自该服务。在构造函数中,然后我调用我的域服务实例:

    [EnableClientAccess()]
    public class BaseDomainService : DomainService
    {
        public BaseDomainService()
           : base()
        {
            MyCustomStaticKernelContainer.Inject(this);
        }
    }