使用IOC获取UmbracoHelper

时间:2018-06-04 12:16:20

标签: asp.net-mvc umbraco autofac

我正在寻求提高Umbraco网站(7.6.4)网站的性能,这条线路出现了很多:

var umbracoHelper = new UmbracoHelper(UmbracoContext.Current);

我可以将UmbracoHelper添加到IOC(通过Autofac)

builder.Register(c => new UmbracoHelper(UmbracoContext.Current));

所以我可以做到这一点,但我应该这样做,还是会得到意想不到的结果?

2 个答案:

答案 0 :(得分:0)

我不认为UmbracoHelper使用接口,所以如果你想使用IOC模拟umbraco依赖项,如果你不使用Microsoft Fakes,你可能会遇到麻烦。

我不知道这是不是最好的做法,但是我添加umbraco依赖项的方式是注册UmbracoHelper的不同组件,它们有一个接口(以下代码是Unity,而不是Autofac):

var umbracoHelper = new UmbracoHelper(UmbracoContext.Current);

if (!Container.IsRegistered<IUmbracoComponentRenderer>())
    Container.RegisterType<IUmbracoComponentRenderer>(new InjectionFactory(o => umbracoHelper.UmbracoComponentRenderer));
if (!Container.IsRegistered<ITypedPublishedContentQuery>())
    Container.RegisterType<ITypedPublishedContentQuery>(new InjectionFactory(o => umbracoHelper.ContentQuery));

这样我就可以轻松地模拟接口而无需使用Microsoft Fakes。

答案 1 :(得分:0)

这就是我使用的umbraco + AutoFaq

 builder.Register(c => ApplicationContext.Current).InstancePerRequest();
 builder.Register(c => UmbracoContext.Current).InstancePerRequest();
 builder.Register(c => new UmbracoHelper(c.Resolve<UmbracoContext>())).InstancePerRequest();