0

クラスがあります

    public class TextBoxConfig
    {
        public string Caption { get; set; }
        public string FieldName { get; set; }
        public int Width { get; set; }
        public string Name { get; set; }
    }

そして、このようなパラメーターとして TextBoxConfig を受け入れる Method を持つもう 1 つのユーティリティ クラス

    public class Util
    {
      public static TextBox ApplySettings(TextBoxConfig  config)
      {
         //Doing something
      }
    }

一般に、このように Util クラスの ApplySettings メソッドを呼び出すことができます

    TextBoxConfig config  = new TextBoxConfig();
    config.Caption = "Name";
    config.FieldName = "UserName"
    config.Width = 20;
    config.Name = "txtName";

    TextBox txt = Util.ApplySettings(config);

しかし、このようにApplySettingsにパラメーターを渡したい

    TextBox txt = Util.ApplySettings(o =>
    {
        o.Caption = "Name";
        o.FieldName = "UserName"
        o.Width = 20;
        o.Name = "txtName";
    });              

どうすればいいのか教えてください..

4

2 に答える 2

0

あなたの希望とまったく同じではありませんが、かなり近いです:

TextBox txt = Util.ApplySettings(new TextBoxConfig()
{
    Caption = "Name",
    FieldName = "UserName",
    Width = 20,
    Name = "txtName"
});

各設定の後のコンマに注意してください。http://msdn.microsoft.com/en-us/library/vstudio/bb397680.aspxを参照してください。

于 2013-03-30T11:58:44.060 に答える
0

さて、気を引き締めてください。これは同じことですが、ラムダ式で強制されています。

TextBox txt = Util.ApplySettings(o =>
{
    o.Caption = "Name";
    o.FieldName = "UserName";
    o.Width = 20;
    o.Name = "txtName";
});

public class Util
{
    public static TextBox ApplySettings(TextBoxConfig config)
    {
        //Doing something
    }

    public static TextBox ApplySettings(Action<TextBoxConfig> modifier)
    {
        var config = new TextBoxConfig();
        modifier(config);

        return ApplySettings(config);            
    }
}

ステートメントの後にセミコロンをいくつか追加する必要がありました。そして、私は他の答えを好むでしょう。しかし、これでラムダ式に対するあなたの欲求が満たされることを願っています。

于 2013-03-30T12:21:28.350 に答える