2011-05-23 73 views
1

我有一个用户控制,我想谁滴在WinForm的用户控件的开发人员,可这个用户控件一样东西有没有更好的方法来实现“自定义”业务验证器?

我想知道,如果我是一个好方法之前测试的一些值,如果有更好的如何做到这一点?

其实在我的用户控件中,我有一个List<IValidator>这是公开公开的集合,给开发者可以添加IValidator已经实现。该接口只实现了一个bool Validate()方法。

用户控件有一个名为Validate()的方法,它在List<IValidator>集合上迭代并调用Validate()方法。

下面是代码:

public partial class MyUserControl : UserControl 
{ 
    private SqlConnection _connection; 
    private List<IValidator> _validators; 


    private void button1_Click(object sender, EventArgs e) 
    { 
     Validate(); 
    } 

    private bool Validate() 
    { 
     foreach (IValidator validator in this.Validators) 
     { 
      validator.Validate(); 
     } 
    } 


    public List<IValidator> Validators 
    { 
     get { return _customValidators; } 
     set { _customValidators = value; } 
    } 

} 

而且在WinForm承载用户控件的代码:

public partial class Form1 : Form 
{ 
    public Form1() 
    { 
     InitializeComponent(); 

    } 

    private void Form1_Load(object sender, EventArgs e) 
    { 
     Validator val1 = new Validator(); 
     myUserControl1.Validators.Add(val1); 
    } 
} 


public class Validator : IValidator 
{ 
    public bool Validate() 
    { 
     return true; 
    } 
} 

如果有可能被“改良”或“简化”我就知道(顺便说一句,没有实现接口)与C#3语法(lambda等)。

回答

1
private void button1_Click(object sender, EventArgs e) 
{ 
    this.Validators.ForEach(v => v.Validate()); 
} 

甚至:

button1.Click += (sender, e) => { this.Validators.ForEach(v => v.Validate()); }; 
相关问题