我想绕过内部方法调用,因此嘲笑它。模拟的方法委托看起来像:
public Microsoft.Moles.Framework.MolesDelegates.OutOutFunc<string,string,string,
byte[]> GetlineStringStringOutStringOut { set; }
现在,在我的测试中,当我尝试访问这个模拟的方法时:
GetlineStringStringOutStringOut = (a,b,c) => {return bytearray};
发生错误,说参数2和3必须用out关键字声明,但是当我用out关键字声明它时,它根本不会编译。我读了其他SO问题和答案,似乎无法完成。
是否可以为此提供用户定义的委托?如果是,请举个例子。
修改
我试图将自己的相同签名委托声明为模拟委托
static delegate byte[] MyFunc<String, String, String>
(string a, out string b, out string c);
但是我不确定如何在调用模拟的委托方法时调用它?
答案 0 :(得分:6)
在从lambda返回之前,您需要为b
和c
变量赋值,并明确指定参数类型,如下所示:
GetlineStringStringOutStringOut = (string a, out string b, out string c) =>
{
b = c = string.Empty;
return new byte[] { };
};