add RegisterAll(Assembly) method
This commit is contained in:
@@ -50,36 +50,36 @@ namespace Pilz.Plugins.Advanced
|
|||||||
Modules = new(this);
|
Modules = new(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
//public void RegisterAll()
|
public void RegisterAll(Assembly assembly)
|
||||||
//{
|
{
|
||||||
// var assembly = Assembly.GetCallingAssembly();
|
const string nameGetFeatures = $"{nameof(IPluginFeaturesProvider.GetFeatures)}";
|
||||||
|
const string nameGetFeaturesExplicit = $"{nameof(IPluginFeaturesProvider)}.{nameof(IPluginFeaturesProvider.GetFeatures)}";
|
||||||
|
const string nameInstance = $"get_{nameof(IPluginFeatureProvider.Instance)}";
|
||||||
|
const string nameInstnaceExplicit = $"get_{nameof(IPluginFeatureProvider)}.{nameof(IPluginFeatureProvider.Instance)}";
|
||||||
|
|
||||||
// foreach (var type in assembly.GetTypes())
|
foreach (var type in assembly.GetTypes())
|
||||||
// {
|
{
|
||||||
// if (type.IsAssignableFrom(typeof(IPluginFeaturesProvider)))
|
if (type.IsAssignableTo(typeof(IPluginFeaturesProvider)))
|
||||||
// {
|
{
|
||||||
// var methods = type.GetMethods(BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic);
|
var methods = type.GetMethods(BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic);
|
||||||
// var method = methods.FirstOrDefault(n => n.Name == nameof(IPluginFeaturesProvider.GetFeatures) || n.Name.EndsWith(nameof(IPluginFeaturesProvider.GetFeatures)));
|
var method = methods.FirstOrDefault(n => n.Name == nameGetFeaturesExplicit || n.Name == nameGetFeatures);
|
||||||
|
|
||||||
// if (method != null && method.Invoke(null, null) is PluginFeature[] features)
|
if (method != null && method.Invoke(null, null) is PluginFeature[] features)
|
||||||
// {
|
{
|
||||||
// foreach (var feature in features)
|
foreach (var feature in features)
|
||||||
// Register(feature);
|
Register(feature);
|
||||||
// }
|
}
|
||||||
// }
|
}
|
||||||
// else if (type.IsAssignableFrom(typeof(IPluginFeatureProvider<>)))
|
else if (type.IsAssignableTo(typeof(IPluginFeatureProvider)))
|
||||||
// {
|
{
|
||||||
// var methods = type.GetMethods(BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic);
|
var methods = type.GetMethods(BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic);
|
||||||
// var method = methods.FirstOrDefault(n => n.Name == nameof(IPluginFeatureProvider<PluginFeature>.Instance) || n.Name.EndsWith(nameof(IPluginFeatureProvider.Instance)));
|
var method = methods.FirstOrDefault(n => n.Name == nameInstnaceExplicit || n.Name == nameInstance);
|
||||||
|
|
||||||
// if (method != null && method.Invoke(null, null) is PluginFeature[] features)
|
if (method != null && method.Invoke(null, null) is PluginFeature feature)
|
||||||
// {
|
Register(feature);
|
||||||
// foreach (var feature in features)
|
}
|
||||||
// Register(feature);
|
}
|
||||||
// }
|
}
|
||||||
// }
|
|
||||||
// }
|
|
||||||
//}
|
|
||||||
|
|
||||||
public void Register<TProvider>() where TProvider : IPluginFeatureProvider
|
public void Register<TProvider>() where TProvider : IPluginFeatureProvider
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user