gpt4 book ai didi

c# - 我应该在我的 IOC 容器中注册哪些类型来实例化 Umbraco ContentService?

转载 作者:太空宇宙 更新时间:2023-11-03 23:15:15 24 4
gpt4 key购买 nike

我的 Umbraco 项目中的一个类依赖于 IContentService。我正在尝试使用 IOC 容器向此类提供 IContentService

下面是我如何使用我的 IOC (Autofac) 注册 IContentService

builder.RegisterType<Umbraco.Core.Services.ContentService>().As<IContentService>();

但是,Umbraco.Core.Services.ContentService 需要这些构造函数参数:

public ContentService(IDatabaseUnitOfWorkProvider provider, RepositoryFactory repositoryFactory, ILogger logger, IEventMessagesFactory eventMessagesFactory, IPublishingStrategy publishingStrategy, IDataTypeService dataTypeService, IUserService userService);

Autofac 卡住了,因为它还不知道这些类型中的任何一个。这是堆栈跟踪:

Exception Details: Autofac.Core.DependencyResolutionException: None of the constructors found with
'Autofac.Core.Activators.Reflection.DefaultConstructorFinder' on type 'Umbraco.Core.Services.ContentService' can be
invoked with the available services and parameters:Cannot resolve parameter
'Umbraco.Core.Persistence.RepositoryFactory repositoryFactory' of constructor 'Void
.ctor(Umbraco.Core.Persistence.UnitOfWork.IDatabaseUnitOfWorkProvider, Umbraco.Core.Persistence.RepositoryFactory,
Umbraco.Core.Logging.ILogger, Umbraco.Core.Events.IEventMessagesFactory, Umbraco.Core.Publishing.IPublishingStrategy,
Umbraco.Core.Services.IDataTypeService, Umbraco.Core.Services.IUserService)'.

我应该向 Autofac 注册哪些类型以便可以实例化我的 ContentService?

最佳答案

这是我解决这个特殊问题的方法。感谢Claus寻求帮助。

我需要使用 RegisterInstance() ( docs here ) 而不是 RegisterType<T>()

public void OnApplicationStarted(UmbracoApplicationBase umbracoApplication, ApplicationContext applicationContext)
{
var builder = new ContainerBuilder();

// Register the components we need resolving with Autofac
builder.RegisterInstance(applicationContext.Services.MemberService).As<IMemberService>();
builder.RegisterInstance(applicationContext.Services.ContentService).As<IContentService>();

// ... Configuration for dependency resolution here ...
}

这是因为 Umbraco 创建了一个 ContentService 的实例。并正确配置。 Autofac 需要被告知使用这个实例而不是尝试创建它自己的实例。

关于c# - 我应该在我的 IOC 容器中注册哪些类型来实例化 Umbraco ContentService?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37442195/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com