我使用VS2013为我的测试解决方案创建了一个假Dll(System.Web.Mvc),我使用以下语法来解析数据:
bool solved = helper.ViewData.ModelState.TryGetValue(key, out state);
我正在使用这个Shim(工作正常):
ShimModelStateDictionary.AllInstances.TryGetValueStringModelStateOut =
delegate(ModelStateDictionary dictionary, string s, out ModelState @out)
{
@out = new ModelState();
return true;
};
但必须有一个替代解决方案,其中包含以下语法:
ShimModelStateDictionary.AllInstances.TryGetValueStringModelStateOut = (ModelStateDictionary dictionary, string s, out ModelState @out) => ...
但我不知道如何用Lambda Expression解决这个问题?我不知道它是如何工作的,也许有人可以给我一个提示或者可以告诉我这种语法是如何工作的。
答案 0 :(得分:0)
基本上,您只需匹配方法签名即可。该方法采用字符串和输出变量,因此需要名称。然后你需要一个方法体(需要花括号,因为你需要两行),它分配out变量并返回正确的返回类型。我自己没有测试过这段代码,但我相信它会起作用。通常,我使用resharper来建议lambda,现在我对语法非常熟悉。
ShimModelStateDictionary
.AllInstances
.TryGetValueStringModelStateOut =
(s, out m) =>
{
m = new ModelState();
return true;
}
^应该是你需要的。