对 Func 的引用不明确

发布于 2024-12-09 20:14:22 字数 709 浏览 0 评论 0原文

我正在使用 ReSharper 5.1 和 Visual Studio 2010。

如果我创建一个新的可移植类库项目并插入以下内容:

using System;

public interface TestInterface<T>
{
    void FindAll(Func<T> f);
}

ReSharper 会将对“Func”的引用突出显示为不明确的引用。选择“转到声明”可以选择

  • 来自 mscorlib 4.0.0.0 的公共委托 TResult Func()

  • 来自 System.Core 2.0.5.0 的公共委托 TResult Func()

但是,C#编译器成功构建此代码。挂起 ReSharper 并选择“转到定义”表明所选取的实际定义来自 System.Core.dll,v4.0.30319

为什么 ReSharper 会感到困惑?

使用标准 C# 类库项目类型不会出现此问题,只有使用可移植类库项目类型时才会出现此问题。

我在检查 C5 通用集合库的源代码时注意到这个问题 对于 C# 和 CLI

I'm using ReSharper 5.1 and Visual Studio 2010.

If I create a new Portable Class Library project and insert the following:

using System;

public interface TestInterface<T>
{
    void FindAll(Func<T> f);
}

ReSharper highlights the reference to 'Func' as an ambiguous reference. Selecting 'Go to declaration' takes me to a choice of

  • public delegate TResult Func<out TResult>(), from mscorlib 4.0.0.0

or

  • public delegate TResult Func<TResult>(), from System.Core 2.0.5.0

However, the C# compiler builds this code successfully. Suspending ReSharper and selecting 'Go To Definition' indicates that the actual definition being picked up is from System.Core.dll, v4.0.30319

Why is ReSharper getting confused?

The problem does not happen using a standard C# class library project type, only with a portable class library project type.

I noticed this problem while examining the source code of the C5 Generic Collection Library
for C# and CLI

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文