前一段时间,我从book中读到,库内部的名称空间应该以一种方式分配,即内部名称空间比其父名称空间具有更具体的类。我们可以在名称空间System.Net
中找到一个示例,在其中可以找到类WebClient。此类比System.Net.Sockets
名称空间中的Socket具有更高的抽象级别(实际上,WebClient
使用Socket
)。
我的问题是,父名称空间和子名称空间使用的所有那些类怎么样?我应该将它们放在哪个命名空间中?我是否应该创建一个名为Parent.Shared
的新名称,并从Parent
,Parent.Child
和Parent.Child.GrandChild
导入它们?
答案 0 :(得分:0)
通常,您在父名称空间中具有通用类,而在子名称空间中具有相关类。例如,在System.Text中,您没有非常相似的类,例如Encoding
或StringBuilder
。在System.Text.RegularExpressions
中,所有类都与正则表达式相关。
其他近似值可以是:
您可以在父名称空间中定义一组接口,并在每个子名称空间中定义具体的实现。例如
DataLayer.Repository
可以定义接口以实现存储库模式。然后,您可以让DataLayer.Repository.EntityFramework
和DataLayer.Repository.NHibernate
用不同的ORM来实现该接口