有誰知道下面這段代碼無法編譯VS2013的問題?嵌入式C#lambda表達式作爲函數參數
GenericCommand.AddHandlerFactory("MyKey", (cmd, action) =>
{
return (command) =>
{
var result = new SuccessResult() { ResultText = "some example text" };
result.Send(command.Configuration);
};
});
AddHandlerFactory的原型是:
public static void AddHandlerFactory(string key, Func<GenericCommand, Action> handlerFactory)
當VS2013編譯,它顯示
命名命令的局部變量不能在此範圍 聲明,因爲它會給一個不同的意思,以命令.... ....
和
代表System.Func WindowsPhoneTestFramework.Client.AutomationClient.Remote.GenericCommand, System.Action不採取2個參數
的更多細節的源代碼是在: https://github.com/Expensify/WindowsPhoneTestFramework/blob/master/Client/AutomationClient/Remote/GenericCommand.cs
EDIT1將第一個命令重命名爲cmd,第一個錯誤消息已解決。但它仍然無法編譯。
錯誤味精:
不能轉換lambda表達式委託類型的委託 System.Func WindowsPhoneTestFramework.Client.AutomationClient.Remote.GenericCommand, System.Action因爲一些在返回類型的塊不能 隱式轉換爲委託返回類型。
這不是唯一的東西。 lambda的返回值應該是一個Action,但它是一個Action。 –
Dirk
2015-03-13 08:37:22