public Result Initialize() { if (mInstance != null) { Shutdown(); } if (string.IsNullOrWhiteSpace(mPluginInfo.AssemblyLocation)) { throw new FileLoadException("The plugin doesn't contain a valid assembly location."); } if (!File.Exists(mPluginInfo.AssemblyLocation)) { throw new FileNotFoundException("The assembly specified in the plugin info can't be found.", mPluginInfo.AssemblyLocation); } using (var factory = GetPluginFactory()) { var createInstanceResponse = factory.CreateInstance <TInterface>(mPluginInfo, mContext); if (createInstanceResponse.HasError) { return(createInstanceResponse); } if (createInstanceResponse.Data == null) { return(Result.CreateError("Unspecified error while creating plugin instance.")); } var args = new PluginInitializationArgs { HostVersion = mHostApplication?.Metadata.ProductVersion, HostLog = mLog }; foreach (var key in InitializationParameters.GetKeys()) { args.InitializationArgs.Write(key, InitializationParameters.Read(key)); } try { mInstance = createInstanceResponse.Data; ((IPlugin)mInstance).Initialize(args); } catch (Exception exception) { WriteFault(exception); } } return(Result.Success); }
public void Initialize(PluginInitializationArgs args) { if (args == null) { throw new ArgumentNullException(nameof(args)); } Log = args.HostLog ?? new NullLogWriter(); Log?.WriteVerbose( "Plugin is initializing:\r\n" + $" Id: {Id}\r\n" + $" Type: {GetType().Name}\r\n" + $" Name: {DisplayName}\r\n" + $" Version: {Version.NormalizeNull()??"(unknown)"}"); OnInitialize(args); }
protected virtual void OnInitialize([NotNull] PluginInitializationArgs args) { }
void IPlugin.Initialize(PluginInitializationArgs args) { Initialize(); }