c# - long - ¿Puede AutoMapper Map entre un tipo de valor(Enum) y un tipo de referencia?(cuerda)
type bool c# (1)
Problema extraño: estoy tratando de mapear entre una enumeración y una cadena , usando AutoMapper:
Mapper.CreateMap<MyEnum, string>()
.ForMember(dest => dest, opt => opt.MapFrom(src => src.ToString()));
No se preocupe si estoy usando .ToString()
, en realidad estoy usando un método de extensión en la propia enumeración ( .ToDescription()
), pero lo he mantenido simple por el bien de la pregunta.
Lo anterior arroja un error de referencia de objeto , cuando estoy simplemente configurando el mapeo.
Teniendo en cuenta esto funciona:
string enumString = MyEnum.MyEnumType.ToString();
No puedo ver por qué mi configuración de AutoMapper no.
¿Puede manejar AutoMapper esto, estoy haciendo algo mal, o es esto un error con AutoMapper?
¿Algunas ideas?
EDITAR
También traté de usar una resolución personalizada:
Mapper.CreateMap<MyEnum, string>()
.ForMember(dest => dest, opt => opt.ResolveUsing<MyEnumResolver>());
public class MyEnumResolver: ValueResolver<MyEnum,string>
{
protected override string ResolveCore(MyEnum source)
{
return source.ToString();
}
}
Mismo error en la misma línea. :(
Para mapear entre dos tipos en los que está tomando el control de toda la asignación, use ConvertUsing:
Mapper.CreateMap<MyEnum, string>().ConvertUsing(src => src.ToString());
Todos los otros métodos suponen que está mapeando a miembros individuales en el tipo de destino.