【发布时间】:2016-09-11 14:58:00
【问题描述】:
我想使用 lambda 表达式将对象发送到参数。
如果我有这样的设置类:
public class Settings() {
public string Name {get;set;}
public string Whatever {get;set;}
}
还有一些其他方法,其参数是一个设置类:
public object GenerateIt(Settings settings) {
// stuff here
}
我想这样称呼它:
myObject.GenerateIt(
s => {
s.Name = "this";
s.Whatever = "whatever";
}
)
我已经尝试过了,但效果不佳:
public object GenerateIt(Func<Settings> settings) { ... }
我也在尝试(根据当前答案)使用操作:
public object GenerateIt(Action<Settings> settings) { ... }
...这允许我(显然)以我喜欢的方式调用该方法,但我似乎无法找到如何访问我传入的那些设置?
public object GenerateIt(Action<Settings> settings) {
Console.WriteLine(settings.Name); // nope
var s = settings(); // nope
???
}
(是的,我确实查阅了文档 - 如果在那之后我清楚,我就不会再问了)
如“我想这样称呼它”示例中所示,允许传递对象的正确机制是什么?谢谢
【问题讨论】: