依赖注入 – Sitecore:将依赖注入sitecore组件
发布时间:2020-12-14 04:51:48 所属栏目:百科 来源:网络整理
导读:我使用Sitecore 8.1 MVC和Autofac作为DI.我想知道将已解析的对象注入sitecore创建的对象的推荐方法是什么,例如管道,命令,计算字段等……例如,我使用的是成员资格提供程序,我需要调用我的业务层.我可以在类上定义构造函数,sitecore会注入对象吗? 谢谢 解决方
我使用Sitecore 8.1 MVC和Autofac作为DI.我想知道将已解析的对象注入sitecore创建的对象的推荐方法是什么,例如管道,命令,计算字段等……例如,我使用的是成员资格提供程序,我需要调用我的业务层.我可以在类上定义构造函数,sitecore会注入对象吗?
谢谢 解决方法
管道处理器,命令等等……基本上是Sitecore创建的任何东西 – 你相当有限.通常的方法是使用服务定位器模式来解决依赖关系:
var membershipProvider = DependencyResolver.Current.Resolve<IMembershipProvider>() 还有其他方法.这篇文章:https://cardinalcore.co.uk/2014/07/02/sitecore-pipelines-commands-using-ioc-containers/使用容器工厂类来解决管道中的依赖关系.这是使用的类: using System; using System.Diagnostics.CodeAnalysis; using Sitecore.Reflection; public class ContainerFactory : IFactory { private readonly IContainerManager containerManager; public ContainerFactory() : this(new LocatorContainerManager()) // service locate an appropriate container { } public ContainerFactory(IContainerManager containerManager) { this.containerManager = containerManager; } public object GetObject(string identifier) { Type type = Type.GetType(identifier); return this.containerManager.Resolve(type); } } 然后,这将被设置为使用配置中的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> 使用第二种方法,您可以像往常一样在构造函数中注入依赖项. 这些可能是最常用的两种选择. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |