我正在编写一个插件锐锐 http://en.wikipedia.org/wiki/ReSharper4. 为此,我需要引用几个ReSharper的程序集。其中一个程序集 (JetBrains.Platform.ReSharper.Util.dll) 包含一个System.Linq
命名空间,其中包含 System.Core 已提供的扩展方法的子集。
当我编辑代码时,它会在这些扩展之间产生歧义,因此我无法使用OrderBy
, 例如。我该如何解决这个问题?我想使用核心LINQ http://en.wikipedia.org/wiki/Language_Integrated_Query扩展,而不是来自 ReSharper 的扩展。
尝试编译时出现以下错误:
之间的调用是不明确的
以下方法或属性:
'System.Linq.Enumerable.OrderBy<string,int>(System.Collections.Generic.IEnumerable<string>
,
System.Func<string,int>)' and
'System.Linq.Enumerable.OrderBy<string,int>(System.Collections.Generic.IEnumerable<string>,
System.Func<string,int>
)'
EDIT:我尝试了下面的建议,不幸的是没有运气。与此同时,我通过删除对的引用“解决”了这个问题System.Core
。这样我就可以使用 ReSharper DLL 文件提供的扩展。
I 上传了一个示例程序 http://a.imagehost.org/download/0589/ClassLibrary1我刚刚导入了我需要的 ReSharper DLL 文件。我更改了别名System.Core
to SystemCore
,添加了extern alias
指令,但仍然不起作用。如果我错过了什么,请告诉我。
附:引用是安装在默认目录中的 ReSharper v4.1 DLL 文件"C:\Program Files\JetBrains\ReSharper\v4.1\..."
.
这可能是使用外部别名 http://msdn.microsoft.com/en-us/library/ms173212.aspx.
在 System.Core 引用的属性页中(即在“引用”下,选择 System.Core,右键单击并选择“属性”),将“别名”值更改为“global,SystemCore”(或者仅更改为“SystemCore”,如果一开始是空白的)。
然后在你的代码中写入:
extern alias SystemCore;
using SystemCore::System.Linq;
这将使 System.Core.dll 的 System.Linq 命名空间中的所有相关类型等可用。这里的名称“SystemCore”是任意的 - 您可以将其称为“DotNet”或其他名称,如果这会让您更清楚的话。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)