Я ищу самый простой / самый элегантный способ выравнивания исходного объекта, используя методы расширения исходного объекта.
Источник:
class Source
{
public int Value1 { get; set; }
public int Value2 { get; set; }
}
Метод расширения, который я хотел бы элегантно отобразить:
static class SourceExtensions
{
public static int GetTotal(this Source source)
{
return source.Value1 + source.Value2;
}
}
Назначение:
class Destination
{
public int Value1 { get; set; }
public int Value2 { get; set; }
public int Total { get; set; }
}
Есть ли лучший способ, чем этот (тот, где мне не нужно вызывать каждый метод расширения)?
using NamespaceContainingMyExtensionMethods;
...
Mapper.CreateMap<Source, Destination>()
.ForMember(destination => destination.Total,
opt => opt.ResolveUsing(source => source.GetTotal()));
Что-то вроде:
Mapper.CreateMap<Source, Destination>()
.ResolveUsingExtensionsInNamespace("NamespaceContainingMyExtensionMethods");
Я знаю, что могу использовать наследственную иерархию на исходных объектах, но в моей ситуации это не идеально.
Я исследовал:
Работают ли сопоставления, основанные на соглашениях AutoMapper, с методами расширения LINQ? и https://github.com/AutoMapper/AutoMapper/issues/34