设想:
在 A 类中引发了一个事件,需要由 B 类中的方法处理。(当前通过委托)
从事件传递到方法的数据当前包装在 C 类中。
这显然需要 B 类依赖于 C 类。
我可以执行任何技术/重构来消除这种依赖关系吗?
例如,将数据展开回简单的原始数据类型并直接传递它们。
设想:
在 A 类中引发了一个事件,需要由 B 类中的方法处理。(当前通过委托)
从事件传递到方法的数据当前包装在 C 类中。
这显然需要 B 类依赖于 C 类。
我可以执行任何技术/重构来消除这种依赖关系吗?
例如,将数据展开回简单的原始数据类型并直接传递它们。
展开到原语会起作用,但请确定您确实确实想要删除这种依赖关系。如果 C 是它们之间的桥梁,或者如果 C 提供它们两者,等等,那么类 A 和 B 都依赖于 C 是完全有效的。
展开到原语会删除编译依赖项,但不会删除数据依赖项,并且实际上可能通过删除逻辑上需要的实体(C 类)来“反规范化”设计
我同意 Steven Lowe 的观点;依赖关系可能是有效的。我可以提供的唯一选择是依赖接口而不是实际的类,但它几乎可以归结为同一件事。
正如大多数其他人所说,对 C 的依赖可能是有效的。
但是,如果依赖 C 给你带来了问题,那可能是因为 C 太复杂或者依赖太多。
如果在事件中传递了类 C,它可能应该是一个没有自身依赖关系的 POCO 类,因此您可能需要考虑对其进行重构。
如果 C 有自己的复杂方法,那么很可能它们实际上属于 A 类。
您是否看过像Structuremap这样的依赖注入框架来至少集中这些依赖并使其可配置?我没有尝试使用事件/委托类型,但如果您在图层周围传递大量自定义类型/接口,它是一个很好的工具。
您可以序列化为 XML,然后通过 XPATH 直接读取 XML(无需反序列化)