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

e4r*_*dog 21 .net c# projects-and-solutions

我正在尝试创建一个通用的库结构.我这样做是通过为我想要的每个常用库创建单独的项目

我有以下2个命名空间:MyCompany.ERPMyCompany.Barcode

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

还有其他首选方式吗?

或者我应该在BarcodeUtilsERPUtils等类中寻找不同的名字?

Ode*_*ded 35

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

不,没有必要,尽管细节依赖于将使用这些类型的类及其具有的using声明.

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

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

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

public void MyMethod()
{
  var a = ERPUtils.Method();
  var b = BCUtils.Method();
}
Run Code Online (Sandbox Code Playgroud)


Joh*_*y_D 18

没有任何其他方式.您可以在using指令中创建别名:

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

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


mil*_*ose 12

MS准则有以下的说:

不要引入泛型类型名称,例如Element,Node,Log和Message.在常见情况下,很可能会导致类型名称冲突.

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

我同意,它可能使用一个好主意,BarcodeUtilitiesErpUtilities代替.(除非客户端代码不打算使用实用程序类,否则您可以命名它们Utilities并制作它们internal.)


Mat*_*son 7

"实用程序"对于一个类来说不是一个非常好的名称,因为它太通用了.因此,我认为您应该将它们重命名为更具信息性的内容.