Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Dependency injection Sitecore:将依赖项注入Sitecore组件_Dependency Injection_Sitecore - Fatal编程技术网

Dependency injection Sitecore:将依赖项注入Sitecore组件

Dependency injection Sitecore:将依赖项注入Sitecore组件,dependency-injection,sitecore,Dependency Injection,Sitecore,我正在使用Sitecore 8.1 MVC和Autofac作为DI。我想知道将解析对象注入sitecore创建的对象(即管道、命令、计算字段等)的推荐方法是什么。。。例如,我正在使用一个成员资格提供程序,我需要在其中调用我的业务层。我是否可以在类上定义构造函数,sitecore将注入对象 感谢使用管道处理器、命令等。。。基本上,Sitecore创建的任何东西都是有限的。通常的方法是使用服务定位器模式来解决依赖关系: var membershipProvider = DependencyResol

我正在使用Sitecore 8.1 MVC和Autofac作为DI。我想知道将解析对象注入sitecore创建的对象(即管道、命令、计算字段等)的推荐方法是什么。。。例如,我正在使用一个成员资格提供程序,我需要在其中调用我的业务层。我是否可以在类上定义构造函数,sitecore将注入对象


感谢使用管道处理器、命令等。。。基本上,Sitecore创建的任何东西都是有限的。通常的方法是使用服务定位器模式来解决依赖关系:

var membershipProvider = DependencyResolver.Current.Resolve<IMembershipProvider>()
然后使用配置中的
factory
属性将其设置为事件或处理器的工厂。配置示例:

<sitecore>
  <events>
    <event name="item:saved">
      <handler factory="ContainerFactory" ref="MyApp.MyHandler, MyApp" method="MyMethod">
        <database>master</database>
      </handler>
    </event>
  </events>
  <pipelines>
    <MyPipeline>
      <processor type="1" factory="ContainerFactory" ref="MyApp.MyProcessor, MyApp" />
    </MyPipeline>
  </pipelines>
  <factories>
    <factory id="ContainerFactory" type="MyApp.ContainerFactory"></factory>
  </factories>
</sitecore>

主人
使用第二种方法,您可以像通常一样将依赖项注入构造函数中


这可能是最常用的两个选项。

请注意服务定位器和捕获依赖项。您将希望在
try/finally
<sitecore>
  <events>
    <event name="item:saved">
      <handler factory="ContainerFactory" ref="MyApp.MyHandler, MyApp" method="MyMethod">
        <database>master</database>
      </handler>
    </event>
  </events>
  <pipelines>
    <MyPipeline>
      <processor type="1" factory="ContainerFactory" ref="MyApp.MyProcessor, MyApp" />
    </MyPipeline>
  </pipelines>
  <factories>
    <factory id="ContainerFactory" type="MyApp.ContainerFactory"></factory>
  </factories>
</sitecore>