匿名类型的匿名方法未经授权?

Sof*_*ion 3 c#

我尝试创建这样的调用,它在javascript中运行良好:

service.DoAction(new { param1="sometext", onOk= () => { Console.WriteLine("ok"); }});
Run Code Online (Sandbox Code Playgroud)

但它不会编译错误:

无法将"匿名方法"分配给匿名类型属性

要么

无法将"lambda表达式"分配给匿名类型属性

知道为什么没有授权吗?语言限制?

Ser*_*rvy 6

lambda的想法是它无法知道代表没有上下文的匿名方法的委托的类型.需要将其分配给具有已知委托类型的内容,以便可以推断出委托的类型.

匿名类型属性还需要根据您分配的类型推断其类型.他们每个人都试图从彼此推断出这种类型,并且它从未在任何地方指定过.

您需要明确指出要用于编译的委托类型:

var foo = new
{
    hi = "Hi!",
    doSomething = new Action(() => Console.WriteLine("Done!"))
};
Run Code Online (Sandbox Code Playgroud)