.net - 创建使用 .NET 命名空间的库的最佳实践

标签 .net dependencies libraries coupling

编写一个定义依赖于另一个库的接口(interface)的库是一种不好的做法吗?

我知道紧密耦合不好,但是在使用 .NET 类时这仍然适用吗?

例如,在 .NET 中,如果我有一个返回 Color 对象的库,它将强制使用我的库的任何内容都依赖于 System.Drawing。在我的库中创建自己的颜色类型类会更好吗?

最佳答案

我区分 Volatile 稳定的依赖关系

一般来说,颜色看起来像一个稳定的依赖关系,因为它已经在 BCL 中,它本质上是确定性的,不涉及任何资源密集型的进程外通信,也不依赖于特定的设置它的运行时环境。

这里唯一要考虑的是,当涉及到 Color 时,BCL 中有多个这样的类,因此请确保您的 API 确实只针对 Windows 窗体应用程序,因为 WPF 有自己的定义颜色。

如果您只需要 Color 以某种颜色绘制 UI 的各个部分,那么内置 Color 类可能就可以了,但是如果 Color 是域模型中的主要概念,并且您需要针对不同的 UI (WPF、Windows 窗体、Web)您最好定义自己的抽象。

在这种更高级的情况下,您可以随后围绕抽象创建适配器和映射器,以弥合抽象和具体 Color 类之间的差距。

关于.net - 创建使用 .NET 命名空间的库的最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1908739/

相关文章:

winforms - 如何使用 NuGet 工作流程避免因程序集版本不匹配而导致的 Winforms 设计器错误

jquery - 如何在我的项目中包含 Bootstrap 3 和 JQuery Datatables?

javascript - 更高级的 javascript 模式的困难

osgi - Peaberry for Guice 解决了什么问题?

c# - .NET GC 停止桌面应用程序 - 性能问题

c# - 如果您的 ViewModel 是 IDisposable,MVC 会调用 Dispose 吗?

c - 使用 make 时,目标文件应该依赖于它自己的头文件吗?

java - gradle 中的本地 Jar 依赖项 : how to import into code

c# - 使用StorageFile的DeleteAsync函数删除本地文件夹中的文件

c# - 文件扩展名后的空格 -> 奇怪的 FileInfo 行为