使用 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);
}