Как предоставить пользовательскому делегату свои параметры в Microsoft Moles - PullRequest
4 голосов
/ 12 декабря 2011

Я хотел обойти внутренний вызов метода и, следовательно, высмеял его. Делегат смоделированного метода выглядит так:

public Microsoft.Moles.Framework.MolesDelegates.OutOutFunc<string,string,string,
byte[]> GetlineStringStringOutStringOut { set; }

Теперь в моем тесте, когда я пытаюсь получить доступ к этому смоделированному методу, например:

GetlineStringStringOutStringOut = (a,b,c) => {return bytearray};

возникает ошибка, при которой параметры 2 и 3 должны быть объявлены с ключевым словом out, но когда я объявляю их с ключевым словом out, он вообще не компилируется. Я читаю другие ТАК вопросы и ответы, и кажется, что это невозможно.

Можно ли предоставить для этого определенный пользователем делегат? Если да, приведите пример.

EDIT:

Я пытался объявить моего собственного делегата такой же подписью, как и у осмеянного делегата

static delegate byte[] MyFunc<String, String, String>
(string a, out string b, out string c);

но я не уверен, как я могу вызвать это при вызове метода имитированного делегата?

1 Ответ

6 голосов
/ 12 декабря 2011

Вам необходимо присвоить значения переменным b и c перед возвратом из лямбды, а также явно указать типы параметров, что-то вроде этого:

GetlineStringStringOutStringOut = (string a, out string b, out string c) => 
{ 
    b = c = string.Empty;

    return new byte[] { };
};
...