我正在寻求提高Umbraco网站(7.6.4)网站的性能,这条线路出现了很多:
var umbracoHelper = new UmbracoHelper(UmbracoContext.Current);
我可以将UmbracoHelper添加到IOC(通过Autofac)
builder.Register(c => new UmbracoHelper(UmbracoContext.Current));
所以我可以做到这一点,但我应该这样做,还是会得到意想不到的结果?
答案 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();