Как преобразовать метод в делегат

102
29 октября 2019, 05:40

Проблема

У меня есть метод:

public static Delegate MethodToDelegate(MethodInfo method)
{
    Delegate d = ...;
    // использовать ТОЛЬКО параметр method и d
    return d;
}

Как мне создать делегат d в этом методе. Я знаю, что можно использовать метод CreateDelegate, но как мне узнать тип делегата?

Answer 1
ParameterInfo[] pars = method.GetParameters();
        List<Type> param = new List<Type>();
        List<Type> methods = new List<Type>();
        methods.Add(method.ReturnType);
        foreach (ParameterInfo p in pars)
        {
            param.Add(p.ParameterType);
        }
        Delegate d = method.CreateDelegate(Expression.GetDelegateType(param.Union(methods).ToArray()));
        return d;

Но будьте внимательны передаваемый метод должен быть статическим, а так же не должен быть IsGenericMethod

READ ALSO
NAUDIO конвертация wav byte[] в mp3 byte[]

NAUDIO конвертация wav byte[] в mp3 byte[]

Уже перепробовал куча вариантовМне по сети приходят байты WaveIn с голосом и передаются в эту функцию:

119
Code First - не создаеся БД

Code First - не создаеся БД

В конструкторе класса контекста есть метод

106
Разорвать соединение COMConector

Разорвать соединение COMConector

Приложение на WPF в котором соединяюсь с 1с(RunApp) после работы вызываю закрытие соединения(ExitApp) все работает коректно соединение закрывается...

106
Дочерняя форма на месте родительской(с#)

Дочерняя форма на месте родительской(с#)

Создаю форму,но дочерняя появляется в другой стороне экрана, а хотелось бы на месте родительской

141