2011-05-23 63 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()); }; 
相關問題