我在解决方案中有多个项目,都针对 4.7.2。然后我在一个返回 valueTuple 的 lib 项目中添加一个方法。多个项目调用此方法,除一个项目外,所有项目都可以正常(编译)。这一项目产生编译器错误。
Error CS1061 ValueTuple<IEnumerable<User>, Dictionary<string, string>, Dictionary<string, string>>' does not contain a definition for 'CreatedUsers' and no extension method 'CreatedUsers' accepting a first argument of type 'ValueTuple<IEnumerable<User>, Dictionary<string, string>, Dictionary<string, string>>' could be found (are you missing a using directive or an assembly reference?)
我已经将这个项目中的所有 nugets pkgs 与其他项目进行了比较,差异很小,然后我取消了那些不同的 nugets,仍然是相同的错误。我四处搜索,知道 4.7 已经内置了 valuetuple,然后我检查了这个项目,它没有System.ValueTuple
任何地方的 nuget 或硬编码 System.ValueTuple.dll。
请帮忙。我总是可以回到 Tuple<> 方式,但 valuetuple 更干净。除非你告诉我还有更多隐藏的问题。
谢谢!
The method that returns valuetuple
public static async Task<(IEnumerable<User> CreatedUsers, Dictionary<string, string> ErrorMsgsA, Dictionary<string, string> ErrorMsgsB)> CreateNewUsers(string param1, CreateUserDTO param2)
{
... ...
... ...
return (createdUs, ErrorMsgs_a, ErrorMsgs_b);
}
导致错误的行:
var createUserResult = await CreateNewUsers(param1, param2);
var created = createUserResult.CreatedUsers; //error
就是这样,编译器抱怨在返回的元组中找不到项目。我在这里列出了编译器错误,它抱怨 valuetuple 中的第一项“CreatedUsers”。实际上,每个其他值元组项“ErrorMsgsA”、ErrorMsgsB 都有一个编译器错误。请记住,我在这个 valuetuple 中引用项目的其他项目都很好,没有错误。