加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

依赖注入 – 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>

使用第二种方法,您可以像往常一样在构造函数中注入依赖项.

这些可能是最常用的两种选择.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读