我想使用lambda表达式将对象发送到参数。
如果我有这样的设置类:
public class Settings() {
public string Name {get;set;}
public string Whatever {get;set;}
}
其他一些方法,其参数是一个Settings类:
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
???
}
(是的,我确实参考了文件 - 如果之后我很清楚,我不会再问了)
允许传递对象的正确机制是什么,如“我想这样称呼它”示例中所示?感谢
答案 0 :(得分:4)
阅读文档。
Func<T>
返回一个T
并且不带任何参数。你想要Action<T>
。
答案 1 :(得分:1)
public object GenerateIt(Action<Settings> settings) { ... }
详细了解Action,Func,Predictate: Delegates: Predicate Action Func
更新:不确定您要归档的内容,但请尝试此操作。