Есть ли способ объявить тип делегата, который соответствует данной функции?То есть я не хочу копировать и вставлять параметры и должен помнить, чтобы обновлять делегата в любое время для изменения сигнатуры функции.В идеале, что-то вроде этого:
class Foo
{
void APIFunction();
}
delegate APIDel = Foo.APIFunction;
Чтобы разрешить мне сделать это:
function IntPtr GetAPIFunctionPointer ()
{
var foo = new Foo();
APIDel del = foo.APIFunction
IntPtr ptr = Marshal::GetFunctionPointerForDelegate(del);
return del;
}
Для контекста у меня есть приложение на основе плагинов, которое поддерживает как управляемые, так и неуправляемые плагины.API плагина объявлен с набором указателей на функции C.Существует управляемый интерфейс с методами, которые отражают C API.Для управляемых плагинов я реализую интерфейс, создаю делегаты для методов интерфейса и собираю эти делегаты в указатели функций, которые может вызывать нативная сторона.Я пытаюсь исключить объявление делегата вручную, потому что это делает 3 места, где я должен вручную обновить параметры функции.