c#:命名空间优先级/优先级?有2个同名的课程

时间:2011-03-25 11:53:32

标签: c# namespaces conflict

我有2个班级,两个都被称为相同的“产品”,1个班级是我的,另一个班级属于其他人。

我在代码中遇到编译错误,因为看起来有些代码试图使用“my”类中的Product而不是“他们的”。

我通过在使用该类的行上添加名称空间来临时修复此问题。

我有他们班级的“使用”。

那么解决这个问题的方法是什么,留下我的前缀或重新排序命名空间......应该先来吗?

我想这给了我另一个问题......如果我解决了这个问题,我需要引用我的课程,那么我将需要加上前缀。

任何建议解决这个问题的最佳方法都会非常有帮助。

6 个答案:

答案 0 :(得分:8)

例如,您可以明确声明。

var myProduct = new MyCompany.MyLibrary.Product();
var otherProduct = new OtherCompany.OtherLibrary.Product();

您甚至可以使用following

using myNS = MyCompany.MyLibrary;
...
var myProduct = new myNS.Product();

答案 1 :(得分:1)

您也可以使用namespace alias指令。

using myProduct = SomeNameSpace.My;
using thierProduct = SomeNameSpace.Thier;

答案 2 :(得分:0)

您可以在不使用名称空间的情况下完全限定类:

namespace.Product product = new namespace.Product();

答案 3 :(得分:0)

如果命名空间和类完全相同,则必须为其中一个命名别名。如果名称空间不同,则另一种选择是使用类的完整路径。

答案 4 :(得分:0)

只需使用Using Direvctive

即可

答案 5 :(得分:0)

usings声明后声明两个(或者一个:只是碰撞的声明)

/*in the usings*/
using MyProduct = MyCompanyNamespace.Product;
using TheirProduct =TheirCompany.Product;

/*some where in the code*/ 
var myProduct = new MyProduct();
var theirProduct = new TheirProduct();