複雑なクラスのオブジェクトとFoo、次のような枝分かれした型階層があるとします。
class Bar {}
class BarA:Bar{}
class BarB:Bar{}
class BarC:BarA{}
タスクは、Foo オブジェクトを Bar の子孫の 1 つに変換することです。2 つのルール セットがあります。
- フィールド値
Barに従ってどの子孫を選択するかについてのルール。Fooたとえば、iffoo.Type == "A"とfoo.Complex == truethanはオブジェクトfooに変換する必要がありBarCます。 fooフィールドをフィールドに変換する方法に関する規則BarXXX。たとえば、BarAをターゲット クラスとして選択した場合、 をfoo.Dateに変換する必要がありますbarA.DateA。しかし、選択した場合はBarC、foo.Dateに変換する必要があり、 に変換する必要がbarC.DateCありbarC.DateAますDateTime.MinValue。
車輪の再発明や、条件付きロジックの調子でスパゲッティ コードを書くことを避けたいだけです。ここでは AutoMapper と ValueInjecter は役に立たないと思います。エレガントなソリューションを探しています。アドバイスをお願いします。