用ria域服务标准asp.net Web应用程序注入

问题描述

| 我想将DI(Ninject)与位于标准asp.net Web服务器上的RIA Web服务一起使用。 我应该如何连接包含数据存储的存储库? 我添加了一个Global.asax文件:
    public class Global : NinjectHttpApplication
{
    protected override Ninject.IKernel CreateKernel()
    {
        IKernel kernel = new StandardKernel();
        kernel.Bind<IPersonRepository>().To<PersonRepository>();
        Application.Add(\"Kernel\",kernel);
        return kernel;
    }
这是我想要将其连接的位置,但是我被卡住了
[EnableClientAccess]
public class PersonService : DomainService
{
    IPersonRepository _personRepository;        

    public PersonService()
    {    
             _personRepository = ????....kernel.Get<IPersonRepository>();

    }
}
看来我只是缺少一种获取应用程序对象的方法,然后它将起作用,或者?     

解决方法

我本身没有RIA Web服务的经验,但是在快速浏览文档之后,我建议您执行以下操作。为Ninject创建IDomainServiceFactory的实现。
public class NinjectDomainServiceFactory : IDomainServiceFactory
{
    private readonly IKernel _kernel;

    public NinjectDomainServiceFactory(IKernel kernel)
    {
        _kernel = kernel;
    }

    public DomainService CreateDomainService(
        Type domainServiceType,DomainServiceContext context)
    {
        var service = _kernel.Get(domainServiceType);
        service.Initialize(context);

        return service;
    }

    public void ReleaseDomainService(DomainService domainService)
    {
        domainService.Dispose();
    }

}
使用Application_Start中的DomainService类注册自定义域服务工厂。
public void Application_Start(object sender,EventArgs e)
{
    var kernel = CreateKernel();
    DomainService.Factory = new NinjectDomainServiceFactory(kernel);
}
确保您在内核中注册了域服务和所有依赖项。 IPersonRepository应该注入到PersonService的构造函数中。
[EnableClientAccess]
public class PersonService : DomainService
{
    private readonly IPersonRepository _personRepository;        

    public PersonService(IPersonRepository personRepository)
    {
        _personRepository = personRepository;
    }
}
希望这会有所帮助,因为我自己还没有尝试过该解决方案。     

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...