C# C通过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(

我想使用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

    ??? 
}
是的,我确实查阅了文件——如果在那之后我清楚了,我就不会再问了


什么是允许传递对象的正确机制,如我想这样称呼它的示例所示?谢谢阅读文档


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) { ... }