Ninject与ria domainservice标准asp.net Web应用程序
我想将DI(Ninject)与位于标准asp.net Web服务器上的RIA Web服务一起使用 我应该如何连接包含数据存储的存储库 我添加了一个Global.asax文件:Ninject与ria domainservice标准asp.net Web应用程序,asp.net,dependency-injection,ninject,ria,Asp.net,Dependency Injection,Ninject,Ria,我想将DI(Ninject)与位于标准asp.net Web服务器上的RIA Web服务一起使用 我应该如何连接包含数据存储的存储库 我添加了一个Global.asax文件: public class Global : NinjectHttpApplication { protected override Ninject.IKernel CreateKernel() { IKernel kernel = new StandardKernel();
public class Global : NinjectHttpApplication
{
protected override Ninject.IKernel CreateKernel()
{
IKernel kernel = new StandardKernel();
kernel.Bind<IPersonRepository>().To<PersonRepository>();
Application.Add("Kernel", kernel);
return kernel;
}
公共类全局:NinjectHttpApplication
{
受保护的重写Ninject.IKernel CreateKernel()
{
IKernel kernel=新的标准内核();
kernel.Bind().To();
添加(“内核”,内核);
返回内核;
}
这是我想把它挂起来的地方,但我被卡住了
[EnableClientAccess]
public class PersonService : DomainService
{
IPersonRepository _personRepository;
public PersonService()
{
_personRepository = ????....kernel.Get<IPersonRepository>();
}
}
[EnableClientAccess]
公共类PersonService:DomainService
{
IPersonRepository_personRepository;
公共人员服务()
{
_personRepository=??……kernel.Get();
}
}
似乎我只是缺少了一种方法来获取应用程序对象,然后它就会工作,或者?我没有RIA Web服务本身的经验,但是在快速浏览文档之后,我建议执行以下操作。创建for Ninject的实现
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中的类注册自定义域服务工厂
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;
}
}
希望这会有帮助,因为我自己还没有尝试过这个解决方案