Я реализовал CaseInsensitiveFromStringDictionaryMapper, как предложено здесь https://github.com/AutoMapper/AutoMapper/issues/3243 Я также зарегистрировал этот преобразователь в autofa c со следующим кодом
protected void ConfigureAutomapper(ContainerBuilder builder)
{
var config = new MapperConfiguration(cfg =>
{
foreach (var assembly in GetAssemblies(CustomAssembliesPrefix))
{
cfg.AddMaps(assembly);
}
cfg.Mappers.Insert(0, new CaseInsensitiveFromStringDictionaryMapper());
});
try
{
config.AssertConfigurationIsValid();
}
catch (AutoMapperConfigurationException ex)
{
var message = new StringBuilder();
message.AppendLine("Automapper configuration error");
Exception exception = ex;
while (exception != null)
{
message.AppendLine($"Message: {ex.Message}");
message.AppendLine($"Stack trace: ");
message.AppendLine($"{ex.StackTrace}");
message.AppendLine($"");
exception = exception.InnerException;
}
EventLogProvider.LogEvent(EventType.ERROR, nameof(WebContainer), "Automapper configuration error", message.ToString());
throw;
}
builder.Register(c => new Mapper(config))
.As<IMapper>()
.SingleInstance();
}
, если я просто сделаю это, Я могу выполнить следующий код, и он отлично отображает все свойства моего целевого объекта: mapper.Map<ReferenceSearchResultDocument>(documentSearchResult.Document)
Но мне нужно указать некоторые c вещи на некоторых участниках, чтобы я создал профиль и отображение для этих членов, но я хотел бы иметь поведение по умолчанию (так, чтобы регистр не учитывал регистр в моем словаре) для других моих членов. Я проверил следующий код: .ForAllOtherMembers(opt => opt.MapFrom(src => src[opt.DestinationMember.Name]))
, но, конечно, это не то же самое, что позволить мапперам выполнять свою работу.
Как мне это исправить?
С уважением,
Benjamin