2

设想:

在 A 类中引发了一个事件,需要由 B 类中的方法处理。(当前通过委托)

事件传递到方法的数据当前包装在 C 类中。
这显然需要 B 类依赖于 C 类。

我可以执行任何技术/重构来消除这种依赖关系吗?
例如,将数据展开回简单的原始数据类型并直接传递它们。

4

5 回答 5

5

展开到原语会起作用,但请确定您确实确实想要删除这种依赖关系。如果 C 是它们之间的桥梁,或者如果 C 提供它们两者,等等,那么类 A 和 B 都依赖于 C 是完全有效的。

展开到原语会删除编译依赖项,但不会删除数据依赖项,并且实际上可能通过删除逻辑上需要的实体(C 类)来“反规范化”设计

于 2008-11-03T14:37:20.140 回答
2

我同意 Steven Lowe 的观点;依赖关系可能是有效的。我可以提供的唯一选择是依赖接口而不是实际的类,但它几乎可以归结为同一件事。

于 2008-11-03T14:46:49.823 回答
0

正如大多数其他人所说,对 C 的依赖可能是有效的。

但是,如果依赖 C 给你带来了问题,那可能是因为 C 太复杂或者依赖太多。

如果在事件中传递了类 C,它可能应该是一个没有自身依赖关系的 POCO 类,因此您可能需要考虑对其进行重构。

如果 C 有自己的复杂方法,那么很可能它们实际上属于 A 类。

于 2008-11-03T15:06:25.260 回答
0

您是否看过像Structuremap这样的依赖注入框架来至少集中这些依赖并使其可配置?我没有尝试使用事件/委托类型,但如果您在图层周围传递大量自定义类型/接口,它是一个很好的工具。

于 2008-11-03T15:14:29.707 回答
-2

您可以序列化为 XML,然后通过 XPATH 直接读取 XML(无需反序列化)

于 2008-11-03T14:37:15.040 回答