使用 AutoMapper 创建通用对象的新实例
Using AutoMapper to create a new instance of an generic object
我正在尝试模拟在存储库中保存实体的行为(使用通用 T 参数)。对于 Save() 方法,我需要存储给定实体的新实例而不是实际实体。
我考虑过为此使用 AutoMapper:
public void Save(T entity)
{
var newEntity = Mapper.Map<T, T>(entity);
this.AddOrUpdate(newEntity);
}
问题是 newEntity 实际上是与实体相同的实例,我对 属性 实体所做的任何更改都会影响存储的 newEntity。
感谢您的帮助。
您可以通过 Activator 创建一个新的 T 实例,然后将现有实体中的值复制到新创建的实体中:
var newEntity = Activator.CreateInstance<T>();
Mapper.Map(entity, newEntity);
我觉得应该是这样的:
public void Save(T entity)
{
Mapper.CreateMap<T, T>();
var newEntity = Mapper.Map<T, T>(entity);
}
我正在尝试模拟在存储库中保存实体的行为(使用通用 T 参数)。对于 Save() 方法,我需要存储给定实体的新实例而不是实际实体。
我考虑过为此使用 AutoMapper:
public void Save(T entity)
{
var newEntity = Mapper.Map<T, T>(entity);
this.AddOrUpdate(newEntity);
}
问题是 newEntity 实际上是与实体相同的实例,我对 属性 实体所做的任何更改都会影响存储的 newEntity。
感谢您的帮助。
您可以通过 Activator 创建一个新的 T 实例,然后将现有实体中的值复制到新创建的实体中:
var newEntity = Activator.CreateInstance<T>();
Mapper.Map(entity, newEntity);
我觉得应该是这样的:
public void Save(T entity)
{
Mapper.CreateMap<T, T>();
var newEntity = Mapper.Map<T, T>(entity);
}