外部别名在C#中的用途是什么?

Mik*_*sen 5 .net c# namespaces

要解决在C#组件之间的冲突的命名空间,我给了一个一个别名NLog:

在此输入图像描述

现在,我可以指一个命名空间等,使得组装:

public class Logger : NLog::NLog.LogReceiverService
{
   // ...
}
Run Code Online (Sandbox Code Playgroud)

但是,在我使用extern alias文件顶部的关键字之前,这不会编译:

extern alias NLog;
Run Code Online (Sandbox Code Playgroud)

我的问题:

extern alias关键字的用途是什么?应该NLog::NLog.LogReceiverService不足以完全消除我所指的程序集别名,命名空间和类型的歧义?

小智 4

在引用上设置 Aliases 属性只会将其指定为该别名,而程序集引用的初始加载是在运行时为项目完成的。为了在文件中使用别名程序集引用,您必须指定要通过 extern alias 关键字使用它,该关键字设置编译器指令来查找该别名。

您可能会认为他们会有某种类型的全局别名,但我认为他们会强制使用显式别名,因为别名会影响性能。

以下是有关 extern 别名的参考资料:http://msdn.microsoft.com/en-us/library/ms173212.aspx