Вы можете использовать общие Action<T>
и Func<T>
и их варианты в качестве делегатов, и бонусом является то, что вам даже не нужно определять отдельный делегат вообще.
Action<T>
занимаетдо 16 различных параметров типа, так: Action<T1, T2>
и выше;Каждый параметр типа является параметром типа для метода в той же позиции.Таким образом, Action<int, string>
будет работать для этого метода:
public void MyMethod(int number, string info)
Func<T>
то же самое, за исключением того, что для методов, которые возвращают значение.Последний аргумент типа - это тип возвращаемого значения.Func<T>
- это не то, что вы бы использовали здесь в вашем случае.
Пример: Func<string, int, object>
будет для такого метода, как:
public object MyOtherMethod(string message, int number)
Использование этих общих делегатов проясняет, чтоАргументы для этого аргумента делегата будут такими, как будто это ваше намерение.
public void MyMethod(Action<string, MyClass>, string message)
Вызывая этот метод, вы знаете, что вам нужно передать метод, который принимает значения string
и MyClass
.
public void MeOtherMethod(Func<int, MyOtherClass>, int iterations)
Здесь вы знаете, что вам нужно передать метод, который принимает параметр int
и возвращает MyOtherClass