C# 解决相同名称空间中定义的冲突

C# 解决相同名称空间中定义的冲突,c#,C#,我在两个不同的名称空间中定义了两个相同的命名类,我希望在我的c#文件中包含这两个名称空间作为using语句,如下所示: using A.B; using C.B; if(check) { // Use A.B ones class foo } else { // Use C.B ones class foo } 假设A.B和C.B都有类foo的定义,其中一个将基于如下检查使用: using A.B; using C.B; if(check) { // Use A.B on

我在两个不同的名称空间中定义了两个相同的命名类,我希望在我的c#文件中包含这两个名称空间作为using语句,如下所示:

using A.B;
using C.B;
if(check)
{
   // Use A.B ones class foo
}
else
{
   // Use C.B ones class foo
}
假设
A.B
C.B
都有
类foo
的定义,其中一个将基于如下检查使用:

using A.B;
using C.B;
if(check)
{
   // Use A.B ones class foo
}
else
{
   // Use C.B ones class foo
}
最好的方法是什么


另外,我无法更改类的名称。

您可以将完全限定的类名与命名空间一起使用

if(检查)
{
var foo=新的A.B.foo();
}
其他的
{
var foo=新的C.B.foo();
}

可以选择为命名空间或类型创建别名。这称为:

或使用完全限定的类名:

if (check)
{
    A.B.Foo foo = new A.B.Foo(); // Use A.B ones class foo
}
else
{
    C.B.Foo foo = new C.B.Foo(); // Use C.B ones class foo
}

假设在名称空间中有一个类Foo

namespace NameSpaceA
{
    class Foo
    {
        public string Sample { get; set; }
    }
}
在命名空间B中也有Foo类

namespace NameSpaceA
{
    class Foo
    {
        public string Sample { get; set; }
    }
}
现在您可以像这样在main方法中使用这个类

using AFoo = NameSpaceA.Foo;
using BFoo = NameSpaceB.Foo;
if(check)
{
   AFoo afo = new AFoo();
}
else
{
   BFoo bFoo = new BFoo();
}
这叫做别名

你也可以用这种方式。它被称为完全限定名


如果这对您有帮助,请选择此作为正确答案。这将有助于社区。

您可以将完整的限定类名与命名空间一起使用,例如
var foo=new A.B.foo()或更好:重命名其中一个类以避免将来混淆。@Jabberwocky OP提到我不能更改类的名称。@sporty_1993是否回答了您的问题,您需要更多详细信息或信息?