GroupCollection.First在netcoreapp中构建,但不在netstandard中构建

时间:2019-09-04 13:39:45

标签: c# .net-core

在无法解决的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.0,那么.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.0的{​​{1}}。我已经手动添加了该程序集和IList,但错误仍然存​​在。

知道发生了什么吗?有解决的办法吗?

1 个答案:

答案 0 :(得分:2)

更高版本的.NET Core implements GroupCollection中的

IList<Group>IList<Group>足以使LINQ扩展方法(如First)起作用。

.NET Framework(或更早版本的.NET Core)中的

GroupCollection确实not实现了该接口(它仅实现了较旧的(非通用)接口)。因此,没有casting,就不能使用First

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