【问题标题】:.NET shared classes between namespaces, how to distribute them?.NET 命名空间之间的共享类,如何分发它们?
【发布时间】:2019-01-27 08:13:54
【问题描述】:

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

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

【问题讨论】:

  • 这将是基于意见的,即使那样,您的问题也太抽象本身无法提供合理的建议。
  • 这个问题更多是建筑/工程类型的问题,应该在softwareengineering 上提问。
  • @Mateusz 在引用其他网站时,指出cross-posting is frowned upon 通常会有所帮助
  • @gnat 谢谢提醒,完全忘了那个。

标签: c# .net namespaces libraries


【解决方案1】:

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

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

【讨论】:

  • @Damien_The_Unbeliever,这取决于应用程序的领域以及我有多少相关类。我会在 Animals 命名空间中有 Dolphin,或者在 Animals.Mamals.Aquatic 命名空间中
  • 那么您的建议是将通用类(由后代命名空间使用)以及更高抽象级别的类放在父命名空间中?
猜你喜欢
  • 1970-01-01
  • 2013-03-12
  • 2021-11-21
  • 1970-01-01
  • 1970-01-01
  • 2021-01-28
  • 2012-06-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多