首页 > 解决方案 > GroupCollection.First 在 netcoreapp 中构建,但不在 netstandard 中

问题描述

我在构建netcoreapp代码时遇到错误,netstandard我无法解决。

以下代码编译在netcoreapp2.2

using System;
using System.Linq;
using System.Text.RegularExpressions;

namespace TestNamespace
{
    public class TestClass
    {
        public static Group Example(string str, string pattern) =>
            Regex.Match(str, pattern).Groups.First();
    }
}

但是,如果我将其更改为netstandard2.0then.First无法编译:

  Class1.cs(10, 46): [CS1061] 'GroupCollection' does not contain a definition for 'First' and no accessible extension method 'First' accepting a first argument of type 'GroupCollection' could be found (are you missing a using directive or an assembly reference?)

但是,如果我在 Jetbrains Rider 中使用“转到代码”,则反汇编将GroupCollection解析为System.Text.RegularExpressions, Version=4.2.1.0which implements IList. 我已手动添加此程序集,System.Linq但错误仍然存​​在。

知道发生了什么吗?有修复的想法吗?

标签: c#.net-core

解决方案


GroupCollection在更高版本的 .NET Core 中实现 IList<Group>. IList<Group>足以让 LINQ 扩展方法(如First)工作。

GroupCollection在 .NET Framework(或更早版本的 .NET Core)中实现该接口(它仅实现较旧的(非通用)接口)。First因此,如果不强制转换,您将无法使用。

如果您决定这样做Cast,那么相同的代码将适用于所有内容(.NET Core / Standard / Framework)。


推荐阅读