我将automapper与autofac一起使用。我的配置文件如下。我在UserConsumer.cs类中使用了它。当我使用它时,第一个映射器工作正常,但是第二个映射器抛出异常“映射器未初始化....”。我检查了其他问题,但没有找到隔离。
映射器未初始化。用适当的配置呼叫初始化。如果您尝试通过容器或其他方式使用Mapper实例,请确保您没有对静态Mapper.Map方法的任何调用,并且如果您使用的是ProjectTo或UseAsDataSource扩展方法,请确保传递适当的IConfigurationProvider实例。
Global.asax.cs> ContainerConfig.RegisterObjects();
public class ContainerConfig
{
public static void RegisterObjects()
{
var builder = new ContainerBuilder();
var config = new AutoMapper.MapperConfiguration(cfg =>
{
cfg.AddProfile(new MapperProfile());
});
builder.Register(context => config.CreateMapper()).As<AutoMapper.IMapper>().SingleInstance();
////more code here
Container.Current = builder.Build();
}
}
}
public class UserConsumerBase
{
protected readonly IComponentContext _container;
public UserConsumerBase(IComponentContext container)
{
_container = container;
}
protected async Task Consume(UserMessage message)
{
using (var db = new OracleDbContex())
{
var mapper = _container.Resolve<IMapper>();
if(...)
{
if(...)
{
if(...)
{
var messageUser = mapper.Map<USER>(message);
user = mapper.Map(messageUser, user); *(failed line)
}
}
}
}
}
}