为什么一个类有多个命名空间?

时间:2018-12-11 15:00:21

标签: .net namespaces frameworks assemblies

所以我注意到我可以为一个类在多个命名空间之间进行选择。

我的班级是Extensions,我可以使用以下三个命名空间之一:

using System.Xml.XPath;
using System.Xml.Schema;
using System.Xml.Linq;

为什么会这样?我知道所有这些命名空间都有不同的方法/类/接口/枚举/委托。

但是为什么没有类似的东西

using System.Xml.Everything;

那些不同的方法/类/接口/枚举/代表会互相干扰吗?

还是这样,以便可以更轻松地读取和管理所有内容?

还是两个原因(甚至更多)?还是我对所有事情完全错了? :D

我还有另一个问题

System.Xml.Linq // Assemblies: System.Xml.XDocument.dll, System.Xml.Linq.dll, netstandard.dll

System.Xml.Schema // Assemblies: System.Xml.Linq.dll, netstandard.dll, System.Xml.XDocument.dll

具有相同的三个程序集。这是什么意思? Linq和Schema实际上是相同的(具有相同的类/等)吗?

1 个答案:

答案 0 :(得分:1)

命名空间的目的是声明一个包含一组相关对象的范围。

using System.Xml.XPath;
using System.Xml.Schema;
using System.Xml.Linq;

以上3个命名空间包含具有不同职责的不同类。

System.Xml.XPath

  • 包含定义用于浏览和编辑XML信息项的光标模型的类,作为XQuery 1.0和XPath 2.0数据模型的实例

System.Xml.Schema

  • 包含XML类,这些类为XML模式定义语言(XSD)模式提供基于标准的支持

System.Xml.Linq

  • 包含LINQ to XML的类。 LINQ to XML是一个内存XML编程接口,使您可以高效,轻松地修改XML文档。

他们可能都引用了相似的程序集,但需要它们来完成其任务。这就是我们首先拆分代码的原因。 可重用性