.NET在命名空间之间共享类,如何分配它们?

时间:2018-08-21 07:26:46

标签: c# .net namespaces libraries

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

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

1 个答案:

答案 0 :(得分:0)

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

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