假设我已经注册了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”。 我在这里缺少什么?
答案 0 :(得分:0)
您不能将泛型类型参数作为运行时参数传递,它们需要在编译时设置。您的代码没有将类型参数设置为sourceType
变量中的值,它告诉编译器该类型被称为sourceType,因此您收到编译错误,因为您尚未定义名为sourceType的类型。