我正试图创建一个通用的库结构。我正在通过为每个我想要的通用库创建单独的项目来实现。
我有以下2个命名空间。MyCompany.ERP
和 MyCompany.Barcode
我需要它们都有一个名为 Utilities
并成为静态类。如果我这样做,我就需要在我的静态类之前指定完整的命名空间名称,以便访问它。
有没有其他更好的方法?
或者我应该在类中使用不同的名称,比如在 BarcodeUtils
和 ERPUtils
?
如果我这样做,我将需要在我的静态类之前指定完整的命名空间名称,以便访问它?
不,没有必要,尽管细节取决于将使用这些类型的类和...。using
宣言 它有。
如果你只用 一个 的名字空间,就不会有歧义,你可以继续使用该类型。
如果你同时使用这两个命名空间,你将不得不完全限定这些用法,或者使用namespacetype 别名 来消除类型的歧义。
using ERPUtils = MyCompany.ERP.Utilities;
using BCUtils = MyCompany.Barcode.Utilities;
public void MyMethod()
{
var a = ERPUtils.Method();
var b = BCUtils.Method();
}
没有其他方法。你可以在 using
指令。
using MC=MyCompany.ERP;
using MB=MyCompany.Barcode;
...
public void Test()
{
var a = MC.Utilities.Method();
var b = MB.Utilities.Method();
}
这是最简单的管理方式。
该 MS指南 有以下几点要说。
不要引入通用类型名称,如元素、节点、日志和消息。很有可能会导致常见场景下的类型名冲突。
而
不要在一个应用程序模型中给命名空间中的类型起相同的名字。
我同意,最好是使用 BarcodeUtilities
和 ErpUtilities
来代替。(除非这些实用类不打算被客户端代码使用,在这种情况下,你可以将它们命名为 Utilities
并使之 internal
.)
"Utilities "不是一个很好的类名,因为它太笼统了。因此,我认为你应该把它们两个都改名为更有意义的名字。
你可以使用一个别名。
using BarcodeUtils = MyCompany.Barcode.Utilities;
在你们有冲突的页面上 但如果这种情况发生在很多地方,最好给它们重命名。
我建议使用不同的类名。 如果你真的想把它们两个都叫做Utilities,那么你可以在使用指令中使用别名功能,如
using ERP = MyCompany.ERP;
using Barcode = MyCompany.Barcode;
...
ERP.Utilities.SomeMethod();
Barcode.Utilities.SomeMethod();
当两个类名相同时,你必须使用完整的路径。否则你会得到一个模棱两可的引用错误。
你可以在使用指令中使用 别名 然而,这将节省你一些打字。
using Project = PC.MyCompany.Project;
我想换一个更有描述性的名字。 I would go for a different name that's somewhat more descritive. A
这实际上取决于您的类的用途。如果您打算将Barcode.Utilities和ERP.Utilies分开发布,最好保持这样。另一方面,如果您要使用它们 只是 在同一个类中,你可以使用2.方法来简化代码。