У меня есть общие делегаты.
public delegate void Metodo();
public delegate void Metodo<T>(T parametro);
public delegate void Metodo<T, U>(T parametro1, U parametro2);
public delegate void Metodo<T, U, V>(T parametro1, U parametro2, V parametro3);
public delegate void Metodo<T, U, V, W>(T parametro1, U parametro2, V parametro3, W parametro4);
И список:
private List<Metodo> ListOfMethods;
Я добавляю методы без параметров, таких как:
public void Method();
ListOfMethods.Add(Method);
Как я могудобавить методы с параметрами в моем списке?
Как и весь мой класс.
public class ListOfUpdateMethods
{
public delegate void Metodo();
public delegate void Metodo<T>(T parametro);
public delegate void Metodo<T, U>(T parametro1, U parametro2);
public delegate void Metodo<T, U, V>(T parametro1, U parametro2, V parametro3);
public delegate void Metodo<T, U, V, W>(T parametro1, U parametro2, V parametro3, W parametro4);
private List<Metodo> MetodosPreAtualizacao;
private List<Metodo> MetodosAtualizacao;
public ListOfUpdateMethods()
{
this.MetodosPreAtualizacao = new List<Metodo>();
this.MetodosAtualizacao = new List<Metodo>();
}
public void AddMetodosPreAtualizacao(Metodo m)
{
this.MetodosPreAtualizacao.Add(m);
}
public void AddMetodosAtualizacao(Metodo m)
{
this.MetodosAtualizacao.Add(m);
}
public void ExecutaMetodosPreAtualizacao()
{
foreach (var metodos in this.MetodosPreAtualizacao)
metodos();
}
public void ExecutaMetodosAtualizacao()
{
foreach (var metodos in this.MetodosAtualizacao)
metodos();
}
}
Я использую в методе в форме Windows:
private void UpdadeControl(ListOfUpdateMethods list, Control control)
{
list.ExecutaMetodosPreAtualizacao();
if (control.InvokeRequired)
{
var action = new Action<ListOfUpdateMethods, Control>(UpdadeControl);
control.Invoke(action, new object[] { list, control });
}
else
{
list.ExecutaMetodosAtualizacao();
}
}
I 'я ищу лучший способ написать универсальный метод для обновления элементов управления в моей форме.