У меня есть пользовательский элемент управления, и я хочу, чтобы разработчик, который удаляет пользовательский элемент управления на winform, мог проверить некоторые значения, прежде чем этот пользовательский элемент управления что-то сделает
Я хочу знать, хорош ли мой метод и существует лиэто лучший способ сделать это?
На самом деле в моем пользовательском контроле у меня есть коллекция List<IValidator>
, которая доступна публично, чтобы разработчик мог добавить IValidator
, который реализовал.Этот интерфейс реализует только метод bool Validate()
.
В пользовательском элементе управления есть метод с именем Validate()
, который выполняет итерацию в коллекции List<IValidator>
и вызывает метод Validate ().
Вотcode:
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 (лямбда и т. д.), кстати.