在无法解决的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
,但错误仍然存在。
知道发生了什么吗?有解决的办法吗?
答案 0 :(得分:2)
GroupCollection
中的 IList<Group>
。 IList<Group>
足以使LINQ扩展方法(如First
)起作用。
GroupCollection
确实not实现了该接口(它仅实现了较旧的(非通用)接口)。因此,没有casting,就不能使用First
。
如果您决定使用Cast
,则相同的代码将适用于所有内容(.NET Core / Standard / Framework)。