首页 > 解决方案 > 我们可以在 wcf 服务中使用简单的注入器进行依赖注入吗?如何?

问题描述

我们可以在 wcf 服务中使用简单的注入器进行依赖注入吗

标签: wcfdependency-injectionsimple-injector

解决方案


我们可以在 wcf 服务中使用简单的注入器进行依赖注入。这是我的演示。安装此 NuGet 包后,必须在应用程序的启动路径中通过调用 SimpleInjectorServiceHostFactory.SetContainer 方法对其进行初始化:

     protected void Application_Start(object sender, EventArgs e)
    {

        var container = new Container();
        container.Options.DefaultScopedLifestyle = new AsyncScopedLifestyle();

        container.RegisterWcfServices(Assembly.GetExecutingAssembly());


        container.Register<IDemo, Demo>();

        SimpleInjectorServiceHostFactory.SetContainer(container);
    }

对于每个服务类,您应该在每个服务类的 .SVC 文件中提供一个工厂属性。例如:

    <%@ ServiceHost
Service="Demo_rest_IIS.Service1"
CodeBehind="Service1.svc.cs"
Factory="SimpleInjector.Integration.Wcf.SimpleInjectorServiceHostFactory,
    SimpleInjector.Integration.Wcf"%>

通过构造方法注入服务:

     public class Service1 : IService1
     {
       private IDemo demo;
       public Service1(IDemo demo){
        this.demo = demo;
        }
     }

您可以参考以下链接:

https://github.com/simpleinjector/Documentation/blob/master/source/wcfintegration.rst


推荐阅读