Example #1
0
        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);
        }
Example #2
0
        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);
        }
Example #3
0
 protected virtual void OnInitialize([NotNull] PluginInitializationArgs args)
 {
 }
Example #4
0
 void IPlugin.Initialize(PluginInitializationArgs args)
 {
     Initialize();
 }