C# 如何在不同的命名空间中处理相同的类名?

C# 如何在不同的命名空间中处理相同的类名?,c#,.net,projects-and-solutions,C#,.net,Projects And Solutions,我正在尝试创建一个公共库结构。我通过为我想要的每个公共库创建单独的项目来实现这一点 我有以下两个名称空间:MyCompany.ERP和MyCompany.Barcode 我需要它们都有一个名为Utilities的类,并且是静态的。如果我这样做,那么我需要在静态类之前指定完整的名称空间名称,以便访问它 还有其他更可取的方法吗 或者我应该在类中使用不同的名称,比如BarcodeUtils和ERPUtils 如果我这样做,那么我需要在静态类之前指定完整的名称空间名称,以便访问它 不,不需要这样做,尽管

我正在尝试创建一个公共库结构。我通过为我想要的每个公共库创建单独的项目来实现这一点

我有以下两个名称空间:
MyCompany.ERP
MyCompany.Barcode

我需要它们都有一个名为
Utilities
的类,并且是静态的。如果我这样做,那么我需要在静态类之前指定完整的名称空间名称,以便访问它

还有其他更可取的方法吗

或者我应该在类中使用不同的名称,比如
BarcodeUtils
ERPUtils

如果我这样做,那么我需要在静态类之前指定完整的名称空间名称,以便访问它

不,不需要这样做,尽管细节取决于将使用这些类型的类及其所具有的属性

如果只使用类中的一个名称空间,则没有歧义,可以继续使用该类型

如果同时使用这两个名称空间,则必须完全限定用法,或者使用名称空间/类型来消除类型的歧义

using ERPUtils = MyCompany.ERP.Utilities;
using BCUtils = MyCompany.Barcode.Utilities;

public void MyMethod()
{
  var a = ERPUtils.Method();
  var b = BCUtils.Method();
}
您可以使用别名:

using BarcodeUtils  =  MyCompany.Barcode.Utilities;

在页面上有冲突。但是,如果在很多地方发生这种情况,理想情况下可以重命名它们。

如果两者的名称相同,则必须使用完整路径。否则,您将得到一个不明确的引用错误

但是,您可以使用可节省键入时间的:

using Project = PC.MyCompany.Project;

我会选择另一个更具描述性的名字。我建议使用不同的类名。如果您真的想调用这两个实用程序,那么可以使用using指令上的别名功能,例如

using ERP = MyCompany.ERP;
using Barcode = MyCompany.Barcode;

...
    ERP.Utilities.SomeMethod();
    Barcode.Utilities.SomeMethod();

没有别的办法了。您可以使用指令在
中创建别名:

using MC=MyCompany.ERP;
using MB=MyCompany.Barcode;
...
public void Test()
{
  var a = MC.Utilities.Method();
  var b = MB.Utilities.Method();
}

这是管理它们的最简单方法。

“实用程序”对于类来说不是一个很好的名称,因为它太通用了。因此,我认为您应该将它们都重命名为更具信息性的名称。

这实际上取决于类的用途。如果你打算分开分发条形码、实用程序和ERP、实用程序,最好保持这样。另一方面,如果您打算在同一个类中仅使用它们,则可以使用2。代码易用性的方法。

有以下说明:

不要引入泛型类型名称,如元素、节点、日志和消息。在常见场景中,它很可能会导致类型名称冲突

不要为单个应用程序模型中名称空间中的类型指定相同的名称

我同意使用
BarcodeUtilities
ErpUtilities
可能是个好主意。(除非客户机代码不打算使用实用程序类,在这种情况下,您可以将它们命名为
实用程序
,并将它们命名为
内部