这是我的问题:
我正在使用一个 DLL 库(不是来自 .NET 框架),它包含一个带有 Tuple
和 Lazy
类的 System
命名空间。
当我尝试编译我的项目时,编译器抛出一些错误,指出这些类存在于 mscorlib.dll
和另一个 DLL 中。
那么,如何使用 .NET Framework 中的类而不删除对其他 DLL 的引用?
最佳答案
如果它们具有相同的命名空间等,那么消除歧义的唯一方法是使用外部别名
。在解决方案资源管理器中,将此恶意引用的 Aliases
属性更改为其他内容,例如 foo
(而不是 global
)。
现在,在需要该程序集类型的类文件中,您必须添加(在最顶部):
extern alias foo;
然后在后面的代码中您可以使用:
foo::Some.Namespace.TheType
或者同样地:
foo.Some.Namespace.TheType
基本上,别名成为消歧的额外层次。作为引用,默认别名是 global
。另请注意,虽然编译器对此没有问题,但 VS2012 IDE 仍然有一些...扭结 extern alias
: https://connect.microsoft.com/VisualStudio/feedback/details/770464/ide-but-not-compiler-incorrectly-reports-an-error-when-using-extern-alias-to-disambiguate-types
关于c# - 另一个 DLL 中的系统命名空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13361816/