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

标签 .net namespaces frameworks assemblies

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

我的类(class)是 Extensions我可以使用以下三个命名空间之一:

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

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

但为什么没有类似的东西
using System.Xml.Everything;

?

那些不同的方法/类/接口(interface)/枚举/委托(delegate)会相互干扰吗?

还是一切都可以更轻松地阅读和管理?

或者这两个原因(甚至更多)?还是我对所有事情都完全错了? :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 实际上是否相同(具有相同的类/等)?

最佳答案

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

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 模式定义语言 (XSD) 模式提供基于标准的支持的 XML 类

  • System.Xml.Linq
  • 包含 LINQ to XML 的类。 LINQ to XML 是一种内存中 XML 编程接口(interface),使您能够高效、轻松地修改 XML 文档

  • 他们可能都引用了类似的程序集,但他们需要这样做才能完成他们的任务。这就是我们首先拆分代码的原因。 可重用性 .

    关于.net - 为什么一个类有多个命名空间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53726839/

    相关文章:

    php - Laravel 4 : Target Interface is not instantiable

    asp.net-mvc-3 - MVC3 ViewModel 命名空间问题

    c# - .NET (C#) 将消息从自定义控件传递到主应用程序

    xcode - 框架在我的目标之一(屏幕保护程序)中不起作用

    .net - 使用字典进行数据继承

    .net - Windows Azure 套接字

    php - drupal (CMS) 或 codeigniter (MVC) 用于创建新的 Web 应用程序?

    ios - xcode: ios 动态框架在提交时显示 "Entitlements 0"

    c# - 由于以下错误 : 80040154 Class not registered,检索具有 CLSID {} 的组件的 COM 类工厂失败

    .net - Asp.Net 应用程序是否有任何类型的文件依赖项跟踪器?