使用AutoMapper创建通用对象的新实例

时间:2015-04-10 08:56:48

标签: c# generics automapper

我正在尝试模拟在存储库中保存实体的行为(使用通用T参数)。对于Save()方法,我需要存储给定实体的新实例而不是实际实例。

我考虑过使用AutoMapper:

    public void Save(T entity)
    {
        var newEntity = Mapper.Map<T, T>(entity);
        this.AddOrUpdate(newEntity);
    }

问题是newEntity实际上是与实体相同的实例,我对实体属性所做的任何更改都会影响存储的newEntity。

感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

您可以通过Activator创建T的新实例,然后将现有实体中的值复制到新创建的实体:

var newEntity = Activator.CreateInstance<T>();
Mapper.Map(entity, newEntity);

答案 1 :(得分:1)

我认为应该是这样的:

public void Save(T entity)
{
  Mapper.CreateMap<T, T>();
  var newEntity = Mapper.Map<T, T>(entity);
}