gpt4 book ai didi

c# - unity 类型 IRegisterAutoMapper 没有可访问的构造函数

转载 作者:太空宇宙 更新时间:2023-11-03 13:39:35 25 4
gpt4 key购买 nike

您好,我正在使用 Unity 作为我的 IoC 容器,并尝试使用 ServiceLocator 获取对象的实例。

这是我要执行的代码:

ServiceLocator.Current.GetInstance<IAutoMapperRegisterFactory>()

我在我的配置文件中设置了 unity 必须实例化的对象:

container.RegisterType<IAutoMapperRegisterFactory, AutoMapperRegisterFactory>();

现在我当前的 AutoMapperRegisterFactory 看起来像这样:

public class AutoMapperRegisterFactory : IAutoMapperRegisterFactory
{
private readonly IRegisterAutoMapper m_RegisterAutoMapper;

public AutoMapperRegisterFactory(IRegisterAutoMapper registerAutoMapper)
{
m_RegisterAutoMapper = registerAutoMapper;
}

public IEnumerable<IRegisterAutoMapper> GetRegisteredAutoMappers()
{
var registeredAutoMappers = new List<IRegisterAutoMapper> { m_RegisterAutoMapper };
return registeredAutoMappers;
}
}

如果我尝试运行它,我会得到这个错误:

 The type IRegisterAutoMapper does not have an accessible constructor.

以前我的 AutomapperRegisterFactory 看起来像这样:

public class AutoMapperRegisterFactory : IAutoMapperRegisterFactory
{
public IEnumerable<IRegisterAutoMapper> GetRegisteredAutoMappers()
{
var registeredAutoMappers = new List<IRegisterAutoMapper> { new RegisterAutoMapper(new RegisterMappings(), new RegisterCustomMappings()) };
return registeredAutoMappers;
}
}

一切正常。我做错了什么,我该如何纠正?

最佳答案

组件 AutoMapperRegisterFactory 需要作为依赖 IRegisterAutoMapper 组件。IRegisterAutoMapperRegisterAutoMapper 类型实现,但是RegisterAutoMapper 类型的构造函数需要两个参数:RegisterMappingsRegisterCustomMappings,所以你必须提供它们。

例如:

container.RegisterType<..., RegisterMappings>();
container.RegisterType<..., RegisterCustomMappings>();

关于c# - unity 类型 IRegisterAutoMapper 没有可访问的构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17569967/

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