[英]Reference a public static class in the global namespace in another assembly
在C#中, 當程序集B在全局命名空間中具有相同名稱的公共靜態類時 ,是否有一種方法可以從程序集B訪問程序集A 的全局命名空間中的公共靜態類 ? 例如,在裝配A中的Bar.cs
中:
using System.Diagnostics;
// NOTE: No namespace declared here - this is in the global:: ns
public static class Bar
{
public static void DoSomethingSilly()
{
Debug.WriteLine("I'm silly!");
}
}
如何在程序集B的Bar.cs
中使用它?
public static class Bar
{
public static void DoSomethingSilly()
{
// call Bar.DoSomethingSilly() from assembly A here
}
}
我嘗試了諸如global::Bar.DoSomethingSilly()
,該方法在程序集B中不起作用(它只是使我獲得對程序集B的引用)。
我也知道我可以使用反射來實現它(類似於Assembly.GetType()
),但是我更想知道是否有一些本機C#語法。 最后,我在程序集A中的代碼周圍添加了一個名稱空間,該名稱空間由我擁有,並且僅在全局名稱空間中,因為它是由另一個工具生成的-添加該名稱空間不會引起任何問題,但是我很好奇是否存在允許這種引用的語法。
感謝@Jon Skeet提供了這一指導-extern別名可以使此工作正常進行。 在引用程序集的屬性上,添加一個別名(例如assemblyA
,或從此處 FooVersion1
截取的屏幕截圖中):
,然后在.cs文件頂部添加:
extern alias assemblyA;
然后將允許:
assemblyA::Foo.DoSomethingSilly();
assemblyA.Foo.DoSomethingSilly();
我仍然將名稱空間添加到生成的代碼中-它更直接,並且避免污染全局名稱空間。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.