[英]Resolving the Conflict of definitions in same namespaces
我在 2 個不同的命名空間中定義了 2 個相同的命名類,我想在我的 c# 文件中將這兩個命名空間作為 using 語句包括在內,如下所示:
using A.B;
using C.B;
假設AB
和C.B
都有class foo
的定義,其中之一將根據如下檢查使用:
if(check)
{
// Use A.B ones class foo
}
else
{
// Use C.B ones class foo
}
做這個的最好方式是什么?
PS 我不能更改類的名稱。
可以選擇為名稱空間或類型創建別名。 這稱為使用別名指令:
using ABFoo = A.B.Foo;
using CBFoo = C.B.Foo;
if (check)
{
ABFoo foo = new ABFoo(); // Use A.B ones class foo
}
else
{
CBFoo foo = new CBFoo(); // Use C.B ones class foo
}
或使用完全限定的 class 名稱:
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
}
您可以將完全限定的 class 名稱與命名空間一起使用
if (check)
{
var foo = new A.B.Foo();
}
else
{
var foo = new C.B.Foo();
}
假設,您在 NameSpaceA 中有一個 class Foo
namespace NameSpaceA
{
class Foo
{
public string Sample { get; set; }
}
}
並且您在 NameSpaceB 中也有 class Foo
namespace NameSpaceA
{
class Foo
{
public string Sample { get; set; }
}
}
現在你可以像這樣在 main 方法中使用這個 class
using AFoo = NameSpaceA.Foo;
using BFoo = NameSpaceB.Foo;
if(check)
{
AFoo afo = new AFoo();
}
else
{
BFoo bFoo = new BFoo();
}
它被稱為別名Aliasing
您也可以使用這種方式。 它被稱為完全限定名稱鏈接
if(check)
{
NameSpaceA.Foo afo = new NameSpaceA.Foo();
}
else
{
NameSpaceB.Foo bFoo = new NameSpaceB.Foo();
}
如果這對您有幫助,請 select 作為正確答案。 它將幫助社區。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.