c# - .NET 命名空间之间的共享类,如何分配它们?

标签 c# .net namespaces libraries

前段时间我读到这个 ​​book库中的命名空间应该以内部命名空间比其父命名空间具有更多具体类的方式分布。我们可以在命名空间 System.Net 中找到这样的例子。 ,我们可以在这里找到类 WebClient .此类具有比 Socket 更高的抽象级别这是在 System.Net.Sockets 里面命名空间(实际上, WebClient 使用 Socket )。

我的问题是,父命名空间和后代命名空间使用的所有这些类怎么样?我应该将它们放在哪个命名空间中?我应该创建一个名为 Parent.Shared 之类的新的不同的东西吗?并从 Parent 导入它们,来自 Parent.Child来自 Parent.Child.GrandChild ?

最佳答案

通常,父命名空间中有通用类,子命名空间中有相关类。例如,在 System.Text 中,您没有非常相关的类,例如 EncodingStringBuilder .在 System.Text.RegularExpressions所有的类都与正则表达式相关。

其他近似值可以是:
您在父命名空间中定义一组接口(interface),并在每个子命名空间中定义一个具体实现。例如DataLayer.Repository可以定义接口(interface)来实现存储库模式。然后你就可以拥有 DataLayer.Repository.EntityFrameworkDataLayer.Repository.NHibernate使用不同的 ORM 实现该接口(interface)

关于c# - .NET 命名空间之间的共享类,如何分配它们?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51943613/

相关文章:

ruby-on-rails - 带有嵌套资源的命名空间 Rails 3.2.8

c++ - 为什么经验丰富的编码人员使用 std::而不是使用命名空间 std;?

C++ 命名空间函数

c# - JSON.NET 反序列化存储为属性的 JSON 对象

c# - PowerShell 和 $null 作为方法参数

.net - 为什么 lambda 表达式参数在 Func 和 Expression<Func> 之间不明确?

c# - 是否建议在 Windows 服务中运行 Visual Studio Tools for Office?

c# - 如何格式化 mssql 日期时间列以仅在网页输入字段上显示时间?

c# - 如何获取隐藏的 Excel 应用程序实例的 ProcessID (PID)

c# - 在 winforms 应用程序中更改按钮图像大小