73

当我在 Visual Studio 8 中添加对项目的程序集引用时,该引用的 Aliases 属性设置为“全局”。这个属性有什么用,为什么设置为全局?

MSDN 告诉我这是程序集的别名列表,但不是我为什么要使用此属性或为什么大多数都被别名为“全局”的原因。

MSDN 参考

4

2 回答 2

126

这是针对“外部别名”的。假设您想使用两种不同的类型,它们都被调用Foo.Bar(即Bar在 的命名空间中Foo)。这两种类型将位于不同的程序集中(根据定义) - 您使用 VS 中的属性将别名与每个引用关联,然后您可以执行以下操作:

extern alias FirstAlias;
extern alias SecondAlias;

using FirstBar = FirstAlias::Foo.Bar;
using SecondBar = SecondAlias::Foo.Bar;

然后在您的代码中使用FirstBarand 。SecondBar

所以基本上它是一个额外的命名级别——除非你真的、真的必须这样做,否则你不应该使用它。它会让很多人感到困惑。一开始就尽量避免陷入这种情况——但在你无法避免的时候要注意这个解决方案。

于 2008-11-13T09:37:25.577 回答
32

搜索“外部别名”;这是一个很少使用的功能,只需要在提供相同类型的两个 dll 之间消除歧义(例如,同一程序集的两个不同版本,或具有共享完全限定名称的类的两个程序集)。

“全局”是默认值。例如,如果您有一个名为 的类Foo.System,您可以通过 明确地引用主System命名空间global::System

于 2008-11-13T09:37:12.957 回答