Да, можно вызвать функцию из другого плагина и использовать её в своём плагине. Для этого необходимо сначала получить доступ к экземпляру плагина, в котором находится нужная функция, а затем вызвать эту функцию.
Для получения доступа к экземпляру плагина можно воспользоваться методом
GetPlugin
класса
PluginLoader
. Например:
Код:
var plugin = PluginLoader.GetPlugin("название_плагина");
После этого можно получить доступ к нужной функции через переменную
plugin
, используя её имя. Например:
Код:
var функция = plugin.GetType().GetMethod("имя_функции");
Затем можно вызвать функцию с помощью метода
Invoke
:
Код:
var результат = функция.Invoke(null, new object[] {аргументы});
Здесь в качестве первого параметра метода
Invoke
передаётся объект, который должен быть использован в качестве
this
при вызове функции. Если функция не является методом экземпляра класса, то можно передать
null
. Второй параметр метода
Invoke
- массив объектов, которые будут использованы в качестве аргументов при вызове функции.
Например, если нужно вызвать функцию
MyFunction
из плагина
MyPlugin
с одним аргументом
arg1
, то код будет выглядеть примерно так:
Код:
var plugin = PluginLoader.GetPlugin("MyPlugin");
var myFunction = plugin.GetType().GetMethod("MyFunction");
var result = myFunction.Invoke(null, new object[] {arg1});