//------------------------------------------------------------------------------ public static object GetPluginHelper(Type pluginInterfaceType, IPluginContext context) { var pluginObjectType = InternalConfiguration.Plugins[pluginInterfaceType]; SettingsBasePlugin pluginObject = (SettingsBasePlugin)Activator.CreateInstance(pluginObjectType); pluginObject.Context = context; return(pluginObject); }
//------------------------------------------------------------------------------ public static PLUGIN_INTERFACE_TYPE GetPluginHelper <PLUGIN_INTERFACE_TYPE>(IPluginContext context) { var pluginInterfaceType = typeof(PLUGIN_INTERFACE_TYPE); var pluginObjectType = InternalConfiguration.Plugins[pluginInterfaceType]; SettingsBasePlugin pluginObject = (SettingsBasePlugin)Activator.CreateInstance(pluginObjectType); pluginObject.Context = context; return((PLUGIN_INTERFACE_TYPE)(object)pluginObject); }
//------------------------------------------------------------------------------ void ProcessDynamicSettingsFromContext(SettingsBasePlugin sourcePlugin, IForegroundSerializerNotificationSink sink, Action <IDynamicSettingsPlugin> pluginAction) { var localDynamicSettings = GetObjectPlugin <Advexp.LocalDynamicSettings.Plugin.ILocalDynamicSettingsPlugin>(); if (sink != null) { sink.OnStartDynamicSettingsSerialization(localDynamicSettings as SettingsBasePlugin); } pluginAction.Invoke(localDynamicSettings); if (sink != null) { sink.OnEndDynamicSettingsSerialization(); } foreach (var pluginInterfaceType in EnumeratePluginTypes()) { var internalPlugin = GetPluginInternally(pluginInterfaceType); var dynamicSettingsPlugin = internalPlugin as IDynamicSettingsPlugin; if (dynamicSettingsPlugin != null) { if (internalPlugin != sourcePlugin && internalPlugin != localDynamicSettings) { if (sink != null) { sink.OnStartDynamicSettingsPluginSerialization(internalPlugin as SettingsBasePlugin); } pluginAction.Invoke(dynamicSettingsPlugin); if (sink != null) { sink.OnEndDynamicSettingsPluginSerialization(); } } } } }
//------------------------------------------------------------------------------ void IPluginContext.DeleteSettings(ISettingsSerializer pluginForegroundSerializer, SettingsBasePlugin sourcePlugin) { try { SetForegroundSerializer(pluginForegroundSerializer); var sink = pluginForegroundSerializer as IForegroundSerializerNotificationSink; if (sink != null) { sink.OnStartStaticSettingsSerialization(this); } DeleteObjectSettings(); if (sink != null) { sink.OnEndStaticSettingsSerialization(); } ProcessDynamicSettingsFromContext(sourcePlugin, sink, (IDynamicSettingsPlugin plugin) => { plugin.DeleteSettings(); }); } finally { SetForegroundSerializer(null); } }