У меня довольно простой вопрос относительно Automapper определения отображения.Я собираюсь глубоко клонировать объект с помощью Automapper , игнорируя свойство 'Id', поэтому я выбрал его для настройки отображения.
public interface IEntity<T>
{
T Id { get; }
}
public abstract class Entity : IEntity<Guid>
{
public Guid Id { get; set; }
}
Все мои объекты получены изEntity
класса, и я просто хочу игнорировать все свойства Id
во вложенной иерархии моего объекта, не будучи настолько явным в определении отображения.
До сих пор я придумал следующий фрагмент кода для клонирования, но как игнорировать отображение Id
свойств для вложенных свойств, а не только для корня.
public static T AutomapperClone<T>(this T source)
where T : IEntity<Guid>
{
var config = new MapperConfiguration(cfg =>
{
cfg.CreateMap<T, T>()
.ForMember(d => d.Id, o => o.Ignore());
});
// checking configuration validity
config.AssertConfigurationIsValid();
// creating mapper
var mapper = config.CreateMapper();
var copy = mapper.Map<T, T>(source);
return copy;
}
Идея состоит в том, что все сущности получают новый идентификатор вместо того, чтобы использовать одни и те же сопоставленные.Это достижимо через Automapper?
Благодарим вас за отзыв.