我有一个班级
public class TextBoxConfig
{
public string Caption { get; set; }
public string FieldName { get; set; }
public int Width { get; set; }
public string Name { get; set; }
}
和另一个实用程序类,它具有一个接受TextBoxConfig作为参数的方法,如此
public class Util
{
public static TextBox ApplySettings(TextBoxConfig config)
{
//Doing something
}
}
一般情况下,我可以像这样调用Util class 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";
});
请建议我怎么做..
答案 0 :(得分: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。
答案 1 :(得分:0)
好吧,支持自己:这是同样的事情,只是用lambda表达式强制执行。
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);
}
}
我必须在声明后添加一些分号。我更喜欢另一个答案。但我希望这能满足你对lambda表达的渴望。