如何在不同的命名空间处理相同的类名?(How to handle same class name i

2019-07-03 18:29发布

我想创建一个公共库结构。 我对每一个共同的lib我想创建单独的项目,这样做

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

我需要两个人都要有一个名为“工具”类是静态的。 如果我这样做,我一定要去,以访问我的静态类之前指定完整的命名空间名称。

有没有做任何其他的首选方式?

或者我应该去像BarcodeUtilsERPUtils在课堂上不同的名字?

Answer 1:

如果我这样做,我会再需要我的静态类之前指定完整的命名空间名称,以访问它?

不,是没有必要的,虽然细节取决于将使用这些类型和类using声明它。

如果你只使用在类的命名空间中的一个 ,没有歧义,你可以继续使用类型。

如果同时使用的命名空间,你将不得不完全限定用途,或使用命名空间/类型的别名来消除歧义的类型。

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

public void MyMethod()
{
  var a = ERPUtils.Method();
  var b = BCUtils.Method();
}


Answer 2:

没有任何其他方式。 你可以在一个别名using指令:

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

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



Answer 3:

在MS准则有以下的说:

不要引入泛型类型的名字,如元素,节点,日志和消息。 有一个非常高的概率也将导致输入常见的场景名称冲突。

命名空间中的单个应用程序模型内不要给同名类型。

我同意,它可能使用一个好主意BarcodeUtilitiesErpUtilities代替。 (除非该实用程序类并非直接提供给客户端的代码中使用,在这种情况下,你可以为它们命名Utilities ,使他们internal 。)



Answer 4:

“工具”是不是一类非常好听的名字,因为它实在太普通。 因此,我认为你应该两者的东西更多的信息重新命名。



Answer 5:

您可以使用别名:

using BarcodeUtils  =  MyCompany.Barcode.Utilities;

在页面上,你有冲突。 但如果这是在很多地方发生的事情非常重命名。



Answer 6:

我会建议使用不同的类名称。 如果你真的想打电话给他们两个工具,那么你可以使用别名功能上的使用指令,如

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

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


Answer 7:

你将不得不使用完整路径当两个名称相同。 否则,你会得到一个明确的引用错误。

您可以使用别名,但会为您节省一些打字:

using Project = PC.MyCompany.Project;

我会去一个不同的名称,这是有点更具描述。 一个



Answer 8:

它实际上取决于你的类的目的。 如果你要分发您Barcode.Utilities和ERP.Utilies seperately最好是留这样的。 在另一方面,如果你打算在同一个类中使用它们,您可以使用2.代码容易的方法。



文章来源: How to handle same class name in different namespaces?