Вы не можете назвать Tuple
элементов - только ValueTuple
элементов.Поддержка кортежей C # 7 основана на типе ValueTuple
.Но даже тогда имена не являются частью самого ValueTuple
... они хранятся в атрибутах вместе с типом возвращаемого значения (или типом параметра).
Таким образом, вы можете определенно объявить это:
public static async Task<(string OrderNumber, string OriginalId)>
GetRequiredReturnValuesFromResponse(string response)
Затем вы можете использовать:
var tuple = await GetRequiredReturnValuesFromResponse(response);
Console.WriteLine(tuple.OrderNumber);
Console.WriteLine(tuple.OriginalId);
Или даже:
var (number, id) = await GetRequiredReturnValuesFromResponse(response);
Но вы не можете назвать элементы, когда явно используете ValueTuple
(если вы не укажетеявные атрибуты именования, которые, как мне кажется, компилятор предупреждает вас в любом случае) или вообще использование Tuple
.
Лично я бы рекомендовал не добавлять типы ValueTuple
в публичные API;Обычно я рассматриваю их как меру остановки для внутренней реализации, которую позже я мог бы решить перенести в более полностью инкапсулированный тип.Но это только личное мнение, и оно не отражает того, что вы можете делать.