我们的代码目前使用非常旧版本的 Automapper (1.1) 到更新的 3.3。自动映射器行为的变化导致了一些问题。
我们有类型的字段,object
可以采用引用类型或值的enum
值。当字段值是枚举值时,Automapper 会将值映射到字符串表示形式。
请参阅下面的代码示例,它说明了我们的问题 - 有人可以告诉我如何说服 Automapper 将枚举值映射到目标枚举值。
在此先感谢 - 克里斯
using AutoMapper;
using AutoMapper.Mappers;
using NUnit.Framework;
namespace AutoMapperTest4
{
[TestFixture]
public class AutomapperTest
{
[Test]
public void TestAutomapperMappingFieldsOfTypeEnumObject()
{
// Configure
var configuration = new ConfigurationStore(new TypeMapFactory(), MapperRegistry.Mappers);
var mapper = new MappingEngine(configuration);
IMappingExpression<Source, Target> parentMapping = configuration.CreateMap<Source, Target>();
parentMapping.ForMember(dest => dest.Value, opt => opt.MapFrom(s => ConvertValueToTargetEnumValue(s)));
var source = new Source { Value = SourceEnumValue.Mule };
var target = mapper.Map<Target>(source);
Assert.That(target.Value, Is.TypeOf<TargetEnumValue>()); // Fails. targetParent.Value is a string "Mule".
}
private static TargetEnumValue ConvertValueToTargetEnumValue(Source s)
{
return (TargetEnumValue)s.Value;
}
}
public enum SourceEnumValue
{
Donkey,
Mule
}
public enum TargetEnumValue
{
Donkey,
Mule
}
public class Source
{
public object Value { get; set; }
}
public class Target
{
public object Value { get; set; }
}
}