private void AddPluginLoadError(PluginErrorInfo errorInfo)
        {
            HashSet <PluginErrorInfo> pluginLoadErrors = this.pluginLoadErrors;

            lock (pluginLoadErrors)
            {
                if (!this.pluginLoadErrors.Contains(errorInfo))
                {
                    this.pluginLoadErrors.Add(errorInfo);
                }
            }
        }
 public string GetLocalizedEffectErrorMessage(PluginErrorInfo errorInfo) =>
 GetLocalizedEffectErrorMessage(errorInfo.Assembly, errorInfo.Type, errorInfo.Error);
        public void ReportShapeLoadError(string filePath, Exception error)
        {
            PluginErrorInfo errorInfo = new PluginErrorInfo(filePath, null, error);

            this.AddPluginLoadError(errorInfo);
        }
        public void ReportEffectLoadError(Assembly assembly, Type type, Exception error)
        {
            PluginErrorInfo errorInfo = new PluginErrorInfo(assembly, type, error);

            this.AddPluginLoadError(errorInfo);
        }