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