Я хочу использовать Automapper с одинаковым типом источника и назначения.
Для каждого случая:
- Я хочу иметь возможность сопоставлять все свойства, которые соответствуют выражению регулярного выражения
- Отображать только свойства, соответствующие другому выражению регулярного выражения
Например, когда я делаю первый случай, я бы использовал ConvertUsing, который делает:
source.GetType().GetProperties(BindingFlags.Instance | BindingFlags.Public)
.Where(p => Regex.IsMatch(p.Name, @"^(Baseline|Actual)Month\d{2}(Dollars|Hours|Statistics)$"))
Однако во втором случае я хочу, чтобы он выполнял только те свойства, которые начинаются с Baseline, или свойства, начинающиеся с Actual, а не обе группы. Я хотел бы иметь два отдельных профиля, как мне кажется, и иметь возможность заставить Mapper.Map идти по правильному пути.
Если я создаю Интерфейс для базовых значений и Интерфейс для фактических значений, я могу сделать что-то вроде этого:
var destination = Mapper.Map<IBaseline>(source);
...
var destination = Mapper.Map<IActual>(source);