Hello,
I am in the process of standardizing our plugin packages. I would like to put all plugins on a common basis in order to be able to reuse functions such as custom logging methods in each plugin package without copying source code.
I have often used nested plugin and configuration classes within a plugin package project. This works without any problems.
Example:
*** shared project / solution ***
Base plugin class:
public abstract class MyCustomActionBase<TConfig> : CustomAction<TConfig> where TConfig: MyCustomActionConfigBase, new()
{
public override Task RunAsync(RunCustomActionParams args)
{
/* initialize own logger object... */
/* run action */
return MyRunAsync(args);
}
public abstract Task MyRunAsync(RunCustomActionParams args);
}
Base config class:
public abstract class MyCustomActionConfigBase : PluginConfiguration
{
[ConfigEditableText(DisplayName = "BaseConfigValue")]
public string BaseConfigValue { get; set; }
}
*** extending / 'productive' project / solution ***
Custom plugin class:
public class MyCustomAction : MyCustomActionBase<MyCustomActionConfig>
{
public override Task MyRunAsync(RunCustomActionParams args)
{
/* do something... */
return Task.CompletedTask;
}
}
Custom config class:
public class MyCustomActionConfig : MyCustomActionConfigBase
{
[ConfigEditableText(DisplayName = "ConfigValue")]
public string ConfigValue { get; set; }
}
Result:
The plugin itself is executed correctly, but the Designer Studio seems to have a problem loading the configuration class correctly. Only the configuration field from the 'MyCustomActionConfig' class is displayed, but not the configuration field from the 'MyCustomActionConfigBase' class. If the plugin/config classes and the base classes are in the same project, the problem does not occur.
Can anyone give me a hint as to what I am doing wrong? Or is this a problem with WEBCON itself?
Tank you!
Marco