c# - .NET 命名空间之间的共享类,如何分发它们?
问题描述
前段时间我从这本书中读到,库中的命名空间应该以内部命名空间比其父命名空间具有更多具体类的方式分布。我们可以在命名空间中找到这样的示例,System.Net
我们可以在其中找到WebClient类。这个类比命名空间内的Socket具有更高的抽象级别System.Net.Sockets
(实际上是WebClient
uses Socket
)。
我的问题是,父命名空间和后代命名空间使用的所有这些类怎么样?我应该将它们放在哪个命名空间中?我应该创建一个新的不同的东西,叫做类似的东西,然后从、从和从Parent.Shared
导入它们吗?Parent
Parent.Child
Parent.Child.GrandChild
解决方案
通常,您在父命名空间中有通用类,在子命名空间中有相关类。例如,在 System.Text 中,您没有非常相关的类,例如Encoding
or StringBuilder
。在System.Text.RegularExpressions
所有类中都与正则表达式有关。
其他近似可以是:您在父命名空间中定义一组接口,在每个子命名空间中定义一个具体实现。例如
DataLayer.Repository
可以定义接口来实现存储库模式。然后您可以拥有DataLayer.Repository.EntityFramework
并DataLayer.Repository.NHibernate
使用不同的 ORM 实现该接口
推荐阅读
- python - 响应前缀 (discord.py)
- php - 从 Laravel Voyager 存储下载 PDF 文件
- kotlin - 如何制作一个非常简单的加载屏幕(不是进度条)
- c#-4.0 - 有没有办法在 Xamarin 表单(软件模式 - mvvm)中创建一个弹出窗口,而不使用插件?
- html - 如何更改垫分隔器的颜色?
- python - Django 模型约束 - 用户的所有行的总和小于一个常数
- asp.net - 从另一个域获取发布的数据时,ASP.NET 网络表单丢失会话
- intellij-idea - Grep 控制台选项卡从 IntelliJ 调试区域消失
- c# - 是否有类似 Web 驱动程序的东西,但适用于 Android 应用程序?
- python - 删除/替换 boto3 中的存储桶