diff --git a/Pilz.Plugins/Pilz.Plugins.csproj b/Pilz.Plugins/Pilz.Plugins.csproj
index 92ecf8f..f128821 100644
--- a/Pilz.Plugins/Pilz.Plugins.csproj
+++ b/Pilz.Plugins/Pilz.Plugins.csproj
@@ -8,7 +8,7 @@
- 2.1.11
+ 2.2.0
diff --git a/Pilz.Plugins/PluginManager{T,T}.cs b/Pilz.Plugins/PluginManager{T,T}.cs
index 816adef..d582e02 100644
--- a/Pilz.Plugins/PluginManager{T,T}.cs
+++ b/Pilz.Plugins/PluginManager{T,T}.cs
@@ -1,4 +1,5 @@
-using System.Reflection;
+using Pilz.Text;
+using System.Reflection;
namespace Pilz.Plugins;
@@ -18,7 +19,7 @@ public class PluginManager where TPluginIn
protected void OnCurrentAppDomainAssemblyLoad(object? sender, AssemblyLoadEventArgs args)
{
- LoadPlugins(args.LoadedAssembly);
+ LoadPlugins(args.LoadedAssembly, null);
}
///
@@ -27,7 +28,7 @@ public class PluginManager where TPluginIn
///
///
///
- public virtual IEnumerable> LoadPlugins(string[] paths, params object?[]? parameters)
+ public virtual IEnumerable> LoadPlugins(string[] paths, object?[]? parameters)
{
var results = new List>();
@@ -43,7 +44,7 @@ public class PluginManager where TPluginIn
///
///
///
- public virtual IEnumerable> LoadPlugins(Assembly[] assemblies, params object?[]? parameters)
+ public virtual IEnumerable> LoadPlugins(Assembly[] assemblies, object?[]? parameters)
{
var results = new List>();
@@ -57,25 +58,30 @@ public class PluginManager where TPluginIn
/// Loads plugins from already loaded assemblies for the current .
///
///
- public virtual IEnumerable> LoadOwnPlugins(params object?[]? parameters)
+ public virtual IEnumerable> LoadOwnPlugins(object?[]? parameters, string? whitelist)
{
- return LoadOwnPlugins(false, parameters);
+ return LoadOwnPlugins(false, parameters, whitelist);
}
///
/// Loads plugins from already loaded assemblies for the current .
///
/// Do also load plugins from all yet not loaded assemblies by listening the event
+ /// >.
/// >.
///
- public virtual IEnumerable> LoadOwnPlugins(bool listenAssemblyLoadContext, params object?[]? parameters)
+ public virtual IEnumerable> LoadOwnPlugins(bool listenAssemblyLoadContext, object?[]? parameters, string? whitelist)
{
var results = new List>();
if (listenAssemblyLoadContext)
AppDomain.CurrentDomain.AssemblyLoad += OnCurrentAppDomainAssemblyLoad;
- foreach (var assembly in AppDomain.CurrentDomain.GetAssemblies())
+ var assemblies = AppDomain.CurrentDomain.GetAssemblies().AsEnumerable();
+ if (!string.IsNullOrWhiteSpace(whitelist))
+ assemblies = assemblies.Where(n => LikeOperator.IsLike(n.GetName().Name, whitelist));
+
+ foreach (var assembly in assemblies)
results.Add(LoadPlugins(assembly, parameters));
return results;
@@ -87,7 +93,7 @@ public class PluginManager where TPluginIn
///
///
///
- public virtual PluginLoadInfo LoadPlugin(string path, params object?[]? parameters)
+ public virtual PluginLoadInfo LoadPlugin(string path, object?[]? parameters)
{
var result = new PluginLoadInfo();
var loadContext = new PluginLoadContext(path);
@@ -118,7 +124,7 @@ public class PluginManager where TPluginIn
///
///
///
- public virtual PluginLoadInfo LoadPlugins(Assembly assembly, params object?[]? parameters)
+ public virtual PluginLoadInfo LoadPlugins(Assembly assembly, object?[]? parameters)
{
var result = new PluginLoadInfo
{
@@ -137,7 +143,7 @@ public class PluginManager where TPluginIn
///
///
///
- public virtual PluginLoadInfo LoadPlugin(params object?[]? parameters) where TPlugin : TPluginInterface
+ public virtual PluginLoadInfo LoadPlugin(object?[]? parameters) where TPlugin : TPluginInterface
{
var result = new PluginLoadInfo
{
@@ -149,12 +155,12 @@ public class PluginManager where TPluginIn
return result;
}
- protected virtual void LoadPlugin(PluginLoadInfo result, params object?[]? parameters)
+ protected virtual void LoadPlugin(PluginLoadInfo result, object?[]? parameters)
{
if (result.Assembly == null)
result.Status = PluginLoadStatus.NoValidPlugin;
- else if (loadedPlugins.Any(n => n.Assembly == result.Assembly))
- result.Status = PluginLoadStatus.AlreadyLoaded;
+ //else if (loadedPlugins.Any(n => n.Assembly == result.Assembly))
+ // result.Status = PluginLoadStatus.AlreadyLoaded;
else
{
foreach (var type in result.Assembly.GetTypes())
@@ -165,7 +171,7 @@ public class PluginManager where TPluginIn
result.Status = PluginLoadStatus.NoValidPlugin;
}
- protected virtual void LoadPlugin(PluginLoadInfo result, Type type, params object?[]? parameters)
+ protected virtual void LoadPlugin(PluginLoadInfo result, Type type, object?[]? parameters)
{
if (loadedPlugins.Any(n => n.Plugin != null && n.Plugin.GetType() == type))
result.Status = PluginLoadStatus.AlreadyLoaded;