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

时间:2014-06-05 17:19:35

标签: c# .net namespaces

要解决C#中程序集之间的命名空间冲突,我给了NLog Alias

enter image description here

现在,我可以在这个程序集中引用名称空间,如下所示:

public class Logger : NLog::NLog.LogReceiverService
{
   // ...
}

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

extern alias NLog;

我的问题:

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

1 个答案:

答案 0 :(得分:4)

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

你会认为他们会有某种类型的全局别名,但我认为他们强制使用显式别名,因为别名会导致性能损失。

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