gpt4 book ai didi

c# - 引用另一个程序集中全局命名空间中的公共(public)静态类

转载 作者:行者123 更新时间:2023-12-04 16:55:51 24 4
gpt4 key购买 nike

在 C# 中,有没有办法从程序集 B 访问程序集 A 中全局命名空间中的公共(public)静态类(假设程序集 B 引用程序集 A),当程序集 B 在具有相同名称的全局命名空间中具有公共(public)静态类时 ?例如在 Bar.cs在装配 A 中:

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!");
}
}

我怎么能在 Bar.cs 中使用它在大会 B 中?
public static class Bar
{
public static void DoSomethingSilly()
{
// call Bar.DoSomethingSilly() from assembly A here
}
}

我尝试了诸如 global::Bar.DoSomethingSilly() 之类的东西,这在程序集 B 中不起作用(它只是让我回到程序集 B 的引用)。

我也知道我可以使用反射来解决它(类似于 Assembly.GetType() ),但我更想知道是否有一些 native C# 语法。最后,我在程序集 A 中的代码周围添加了一个命名空间,它是我拥有的,并且仅在全局命名空间中,因为它是由另一个工具生成的 - 添加命名空间不会引起任何问题,但我很好奇是否有允许这种引用的语法。

最佳答案

感谢@Jon Skeet 在这个方向上 - extern 别名可以使这项工作发挥作用。在用于引用程序集的属性上,添加别名(例如 assemblyA ,或在取自 here FooVersion1 的屏幕截图中):

property window example

,并在 .cs 文件的顶部添加:

extern alias assemblyA;

这将允许:
assemblyA::Foo.DoSomethingSilly();
assemblyA.Foo.DoSomethingSilly();

我仍然去为生成的代码添加一个命名空间——它更简单,避免污染全局命名空间。

关于c# - 引用另一个程序集中全局命名空间中的公共(public)静态类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39905790/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com