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