鉴于要求:
取一个对象图,根据第二个字符串属性的处理值设置所有枚举类型属性。约定规定源字符串属性的名称将是后缀为“Raw”的枚举属性的名称。
通过处理我们的意思是我们需要去除指定的字符等
我查看了自定义格式化程序、值解析器和类型转换器,但似乎没有一个可以解决这个问题?
我们希望使用 AutoMapper 而不是我们自己的反射例程,原因有两个:a)它在项目的其余部分中广泛使用,b)它为您提供递归遍历 ootb。
- 例子 -
给定下面的(简单)结构,并且:
var tmp = new SimpleClass
{
CountryRaw = "United States",
Person = new Person { GenderRaw="Male" }
};
var tmp2 = new SimpleClass();
Mapper.Map(tmp, tmp2);
我们希望 tmp2 的 MappedCountry 枚举为 Country.UnitedStates,而 Person 属性的性别为 Gender.Male。
public class SimpleClass1
{
public string CountryRaw {get;set;}
public Country MappedCountry {get;set;}
public Person Person {get;set;}
}
public class Person
{
public string GenderRaw {get;set;}
public Gender Gender {get;set;}
public string Surname {get;set;}
}
public enum Country
{
UnitedStates = 1,
NewZealand = 2
}
public enum Gender
{
Male,
Female,
Unknown
}
谢谢