Ninject 3,WCF服务和参数化构造函数
我在IIS中托管了一个WCF服务。此解决方案由两个项目组成:服务和数据。服务依赖于数据,如下所示:Ninject 3,WCF服务和参数化构造函数,wcf,architecture,dependency-injection,ninject,ninject-extensions,Wcf,Architecture,Dependency Injection,Ninject,Ninject Extensions,我在IIS中托管了一个WCF服务。此解决方案由两个项目组成:服务和数据。服务依赖于数据,如下所示: Service -> Data 我一直在尝试反转依赖关系,如下所示: Service <- Data Service context.Kernel.Get()); } 当我尝试启动我的服务时,我仍然得到以下信息: 无法将提供的服务类型作为服务加载,因为它没有默认(无参数)构造函数。要解决此问题,请向该类型添加默认构造函数,或将该类型的实例传递给主机 我觉得问题在于我没有在内核中
Service -> Data
我一直在尝试反转依赖关系,如下所示:
Service <- Data
Service context.Kernel.Get());
}
当我尝试启动我的服务时,我仍然得到以下信息:
无法将提供的服务类型作为服务加载,因为它没有默认(无参数)构造函数。要解决此问题,请向该类型添加默认构造函数,或将该类型的实例传递给主机
我觉得问题在于我没有在内核中绑定DataInjectionModule,但是如果我尝试这么做,我必须添加一个从服务到数据的依赖项,这正是我试图避免的
如能提供一般专家意见,将不胜感激。谢谢 请检查第6点:“在.svc文件标记中添加了出厂配置。” 你做得对吗 *.svc文件应具有以下代码:
Factory="Ninject.Extensions.Wcf.NinjectServiceHostFactory"
/// <summary>
/// Load your modules or register your services here!
/// </summary>
/// <param name="kernel">The kernel.</param>
private static void RegisterServices(IKernel kernel)
{
kernel.Bind<IService>().To<Service>()
.WithConstructorArgument("IDataProxy", context => context.Kernel.Get<IDataProxy>());
}
Factory="Ninject.Extensions.Wcf.NinjectServiceHostFactory"