Используя МОК, чтобы получить UmbracoHelper - PullRequest
0 голосов
/ 04 июня 2018

Я смотрю на улучшение производительности на моем сайте Umbraco (7.6.4), и эта строка выглядит очень много:

var umbracoHelper = new UmbracoHelper(UmbracoContext.Current);

Я могу добавить UmbracoHelper в IOC (через Autofac)

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

Так что я могу это сделать, но должен ли я это делать, или я могу получить неожиданные результаты?

Ответы [ 2 ]

0 голосов
/ 30 октября 2018

Это то, что я использую для Umbraco + AutoFaq

 builder.Register(c => ApplicationContext.Current).InstancePerRequest();
 builder.Register(c => UmbracoContext.Current).InstancePerRequest();
 builder.Register(c => new UmbracoHelper(c.Resolve<UmbracoContext>())).InstancePerRequest();
0 голосов
/ 04 июня 2018

Я не думаю, что 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.

...