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
可能是个好主意。(除非客户机代码不打算使用实用程序类,在这种情况下,您可以将它们命名为实用程序
,并将它们命名为内部
)