add IPluginFeatureConstructor as alternative provider option

This commit is contained in:
2025-03-03 11:17:53 +01:00
parent 7b38286642
commit d7ba63a642
2 changed files with 20 additions and 1 deletions

View File

@@ -0,0 +1,5 @@
namespace Pilz.Plugins.Advanced;
public interface IPluginFeatureConstructor
{
}

View File

@@ -1,4 +1,5 @@
using System.Reflection; using Microsoft.VisualBasic;
using System.Reflection;
namespace Pilz.Plugins.Advanced; namespace Pilz.Plugins.Advanced;
@@ -132,6 +133,19 @@ public class PluginFeatureController
if (method != null && method.Invoke(null, null) is PluginFeature feature) if (method != null && method.Invoke(null, null) is PluginFeature feature)
Register(feature); Register(feature);
} }
else if (type.IsAssignableTo(typeof(IPluginFeatureConstructor)))
{
if (type.GetConstructor(BindingFlags.Public | BindingFlags.NonPublic, [typeof(PluginFeatureController)]) is ConstructorInfo ctor1)
{
if (ctor1.Invoke([this]) is PluginFeature feature)
Register(feature);
}
else if (type.GetConstructor(BindingFlags.Public | BindingFlags.NonPublic, []) is ConstructorInfo ctor)
{
if (ctor.Invoke([this]) is PluginFeature feature)
Register(feature);
}
}
} }
/// <summary> /// <summary>