From 96b6536a7a23f64c6430c290a3518c111509b326 Mon Sep 17 00:00:00 2001 From: Pilzinsel64 Date: Mon, 11 Nov 2024 12:53:58 +0100 Subject: [PATCH] separete parameters collection --- Pilz.Plugins/PluginManager{T,T}.cs | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/Pilz.Plugins/PluginManager{T,T}.cs b/Pilz.Plugins/PluginManager{T,T}.cs index e74b139..816adef 100644 --- a/Pilz.Plugins/PluginManager{T,T}.cs +++ b/Pilz.Plugins/PluginManager{T,T}.cs @@ -167,9 +167,6 @@ public class PluginManager where TPluginIn protected virtual void LoadPlugin(PluginLoadInfo result, Type type, params object?[]? parameters) { - if (parameters == null || parameters.Length == 0) - parameters = DefaultParameters; - if (loadedPlugins.Any(n => n.Plugin != null && n.Plugin.GetType() == type)) result.Status = PluginLoadStatus.AlreadyLoaded; else if (type.IsAssignableTo(typeof(TPluginInterface))) @@ -180,7 +177,7 @@ public class PluginManager where TPluginIn try { - if (Activator.CreateInstance(type, GetConstructorFlags(), null, parameters, null) is TPluginInterface plugin) + if (Activator.CreateInstance(type, GetConstructorFlags(), null, GetParameters(type, parameters), null) is TPluginInterface plugin) { if (plugin is IPluginLateInitialization pluginLateInit) pluginLateInit.LateInit(); @@ -200,6 +197,13 @@ public class PluginManager where TPluginIn result.Status = PluginLoadStatus.NoValidPlugin; } + protected virtual object?[]? GetParameters(Type type, object?[]? parameters) + { + if (parameters == null || parameters.Length == 0) + return DefaultParameters; + return parameters; + } + protected virtual BindingFlags GetConstructorFlags() { return BindingFlags.Instance | BindingFlags.Public | BindingFlags.CreateInstance;