C# C通过Lambda接受对象参数
我想使用lambda表达式将对象发送到参数 如果我有这样的设置类:C# C通过Lambda接受对象参数,c#,lambda,C#,Lambda,我想使用lambda表达式将对象发送到参数 如果我有这样的设置类: public class Settings() { public string Name {get;set;} public string Whatever {get;set;} } 以及其他一些参数为设置类的方法: public object GenerateIt(Settings settings) { // stuff here } 我想这样称呼它: myObject.GenerateIt(
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
???
}
是的,我确实查阅了文件——如果在那之后我清楚了,我就不会再问了
什么是允许传递对象的正确机制,如我想这样称呼它的示例所示?谢谢阅读文档
Func返回一个T,不接受任何参数。您需要采取行动。阅读文档 Func返回一个T,不接受任何参数。你需要行动 阅读更多有关操作、功能、预测的信息: 更新:不确定要归档的内容,但请尝试此项 阅读更多有关操作、功能、预测的信息: 更新:不确定要归档的内容,但请尝试此项
那么我如何使用该方法主体中的设置?对于Func,我会说Settings=Settings.Invoke,然后使用s变量访问我传递的内容。。。似乎找不到如何使用Action执行该操作那么我如何使用该方法主体中的设置?对于Func,我会说Settings=Settings.Invoke,然后使用s变量访问我传递的内容。。。似乎找不到如何使用操作执行此操作请查看问题更新。。。然后如何从目标方法中使用设置对象?@jdl134679您可以像var s=new Settings一样调用它;设置;s将包含您的属性集。我明白了。。。创建一个新变量,将其传递给操作,操作将相应地填充该变量。行得通,谢谢请查看问题更新。。。然后如何从目标方法中使用设置对象?@jdl134679您可以像var s=new Settings一样调用它;设置;s将包含您的属性集。我明白了。。。创建一个新变量,将其传递给操作,操作将相应地填充该变量。那很有效,谢谢
public object GenerateIt(Action<Settings> settings) { ... }