假设我们有一些复杂类的对象Foo
和一些分支类型层次结构,例如:
class Bar {}
class BarA:Bar{}
class BarB:Bar{}
class BarC:BarA{}
任务是将 Foo 对象转换为 Bar 后代之一。我们有两组规则:
Bar
关于我们应该根据Foo
字段值选择哪个后代的规则。例如, iffoo.Type == "A"
和foo.Complex == true
thanfoo
应该转换为BarC
object。- 关于如何将
foo
字段转换为BarXXX
字段的规则。例如,如果我们选择BarA
作为目标类,foo.Date
则应该转换为barA.DateA
. 但如果我们选择BarC
,foo.Date
应该转换为barC.DateC
应该barC.DateA
是DateTime.MinValue
。
我只是想避免重新发明轮子并使用条件逻辑编写意大利面条代码。我认为 AutoMapper 和 ValueInjecter 在这里无济于事。我正在寻找一些优雅的解决方案。请问有什么建议吗?