另一个DLL中的系统名称空间

时间:2012-11-13 13:44:51

标签: c# .net sterling-db

这是我的问题:

我使用的DLL库(不是来自.NET框架)包含System名称空间,包含TupleLazy类。

当我尝试编译项目时,编译器会抛出一些错误,指出这些类存在于mscorlib.dll和另一个DLL中。

那么,我如何使用.NET Framework中的类并且不删除对其他DLL的引用?

3 个答案:

答案 0 :(得分:7)

如果它们具有相同的命名空间等,那么消除歧义的唯一方法是使用extern alias。在解决方案资源管理器中,将此恶意引用的Aliases属性更改为其他内容,例如foo(而不是global)。

现在,在您需要该程序集中的类型的类文件中,您必须添加(在最顶层):

extern alias foo;

然后在您可以使用的代码中输入:

foo::Some.Namespace.TheType

或同等地:

foo.Some.Namespace.TheType

基本上,别名是一种额外的消歧程度。作为参考的默认别名是global。但是请注意,虽然编译器对此很好,但VS2012 IDE仍然有一些...... 扭结extern alias:{{3} }

答案 1 :(得分:5)

听起来您正在使用的第三方库旨在用于.NET 2.0或.NET 3.5。

如果第三方为.NET 4+提供DLL,我会非常惊讶 - 我强烈怀疑你可以只替换那些针对你的目标框架版本的DLL重建。

答案 2 :(得分:3)

这可能是针对.NET 2或3.5的库,它为.NET 4功能添加了自己的实现(TupleLazy)。查找此库的更新.NET 4版本。