自动映射:检索DTO映射

时间:2014-08-26 12:38:51

标签: c# automapper

假设我已经注册了DTO(实现IBaseDto)以映射到实体(实现IUpdateEntity)

现在,当我有一个通用TEntity(currentItem)时,我想找到它映射到的正确DTO类型。 我有以下代码:

  var mappings = Mapper.GetAllTypeMaps();
  var typeMap = mappings.FirstOrDefault(m => m.DestinationType == typeof (TEntity) &&   m.SourceType == typeof(BaseDto));
  if (typeMap != null)
  {
     var sourceType = typeMap.SourceType;

     var dto = currentItem.Map().To<sourceType>(); //map the entity to it's DTO
     var request = new SaveServiceRequest<sourceType> { Entity = currentItem }; // create a SaveServiceRequest
     SaveItem(request); //save the DTO
  }

现在我遇到的问题是我尝试将currentItem映射到DTO的行。 VS / Resharper说它无法解析符号“sourceType”。 我在这里缺少什么?

1 个答案:

答案 0 :(得分:0)

您不能将泛型类型参数作为运行时参数传递,它们需要在编译时设置。您的代码没有将类型参数设置为sourceType变量中的值,它告诉编译器该类型被称为sourceType,因此您收到编译错误,因为您尚未定义名为sourceType的类型。