要件を考えると:
オブジェクト グラフを取得し、2 番目の文字列プロパティの処理された値に基づいてすべての列挙型プロパティを設定します。ソース文字列プロパティの名前は、"Raw" の接尾辞が付いた enum プロパティの名前になることが規則で定められています。
処理されるとは、指定された文字などを取り除く必要があることを意味します
カスタムフォーマッター、値リゾルバー、型コンバーターを見てきましたが、どれもこれに対する解決策のようには見えませんか?
独自のリフレクション ルーチンとは対照的に AutoMapper を使用したい理由は 2 つあります。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
}
ありがとう