我正在尝试创建一个通用的库结构。我对每一个共同的lib创建单独的项目,这样做,我想如何在不同的命名空间中处理相同的类名?
我有以下2个命名空间:MyCompany.ERP和MyCompany.Barcode
我需要两个人都要有一个类命名“实用程序”并且是静态的。如果我这样做,那么我需要在我的静态类之前指定完整的名称空间名称才能访问它。
有没有其他的首选方法呢?
或者我应该去像BarcodeUtils和ERPUtils在课堂上不同的名字?
我正在尝试创建一个通用的库结构。我对每一个共同的lib创建单独的项目,这样做,我想如何在不同的命名空间中处理相同的类名?
我有以下2个命名空间:MyCompany.ERP和MyCompany.Barcode
我需要两个人都要有一个类命名“实用程序”并且是静态的。如果我这样做,那么我需要在我的静态类之前指定完整的名称空间名称才能访问它。
有没有其他的首选方法呢?
或者我应该去像BarcodeUtils和ERPUtils在课堂上不同的名字?
如果我这样做,那么我需要在我的静态类之前指定完整的名称空间名称才能访问它?
不,不需要那个,虽然细节取决于使用这些类型的类以及它具有的类型。
如果您只使用一个类中的名称空间,则不会出现歧义,您可以继续并使用该类型。
如果使用两个名称空间,则必须完全限定用法,或使用名称空间/类型aliases来消除这些类型的歧义。
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;
你有冲突的页面。但理想情况下,如果这种情况发生在很多地方,请重命名它们。
当两者命名相同时,您将不得不使用完整路径。否则,你会得到一个模棱两可的引用错误。
您可以使用alias然而,将节省您一些打字:
using Project = PC.MyCompany.Project;
我会去一个不同的名称,这是有点更具描述。 A
我会建议使用不同的类名。如果你真的想调用它们的两个Utilities,那么你可以在using指令中使用别名特性,例如,
using ERP = MyCompany.ERP;
using Barcode = MyCompany.Barcode;
...
ERP.Utilities.SomeMethod();
Barcode.Utilities.SomeMethod();
没有其他办法。您可以在using
指令做出别名:
using MC=MyCompany.ERP;
using MB=MyCompany.Barcode;
...
public void Test()
{
var a = MC.Utilities.Method();
var b = MB.Utilities.Method();
}
这是管理他们的最简单方法。
对于一个班级来说,“公用事业”并不是一个很好的名字,因为它太笼统了。因此,我认为你应该将它们重命名为更具信息性的内容。
它实际上取决于你的类的目的。如果你打算分开分发你的Barcode.Utilities和ERP.Utilies,最好保持这样。另一方面,如果你打算在同一类中使用它们只有,你可以使用2.方法来简化代码。
的MS guidelines有以下说:
不要引入泛型类型的名字,如元素,节点,日志和消息。在常见情况下,导致类型名称冲突的可能性非常高。
和
不要在命名空间中的单个应用程序模型中给予相同的名称类型。
我同意用BarcodeUtilities
和ErpUtilities
代替它可能是个好主意。 (除非实用程序类别不打算用于客户端代码,在这种情况下,您可以将它们命名为Utilities
并使它们成为internal
。)