Согласно сообщению об ошибке компилятора, вы не можете использовать деконструкцию с динамическими значениями.
В этом случае вы знаете, что ваш метод собирается вернуть кортеж, поэтому либо приведите результат к этому:
(result, errorList) = ((string, List<string>)) d.MyMethod(appSettings, params);
Или назначьте кортежу, а затем деконструируйте:
(string, List<string>) tuple = d.MyMethod(appSettings, params);
(result, errorList) = tuple;
Обратите внимание, что приведение выглядит немного странно с двойными скобками, но они необходимы: внешние скобки предназначены длясинтаксис кастинга;внутренние скобки для синтаксиса типа кортежа.
Вот полный простой пример:
using System;
class Test
{
static void Main()
{
dynamic d = new Test();
// Variables we want to deconstruct into
string text;
int number;
// Approach 1: Casting
(text, number) = ((string, int)) d.Method();
// Approach 2: Assign to a tuple variable first
(string, int) tuple = d.Method();
(text, number) = tuple;
}
public (string, int) Method() => ("text", 5);
}