Dependency injection Sitecore:将依赖项注入Sitecore组件
我正在使用Sitecore 8.1 MVC和Autofac作为DI。我想知道将解析对象注入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创建的任何东西都是有限的。通常的方法是使用服务定位器模式来解决依赖关系:
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>