我使用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>
这些可能是最常用的两种选择.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。