/// <summary>Initializes a new instance of the <see cref="ImportPlugInSettingsParameters"/> class.</summary> /// <param name="settings">The plug in settings.</param> /// <param name="codecs">The codec registry.</param> /// <param name="openCodecDialog">The service used to locate plug in assemblies for loading.</param> /// <param name="pluginService">The content plug in service.</param> /// <param name="commonServices">Common application services.</param> /// <exception cref="ArgumentNullException">Thrown when any parameter is <strong>null</strong>.</exception> public ImportPlugInSettingsParameters(SpriteImportSettings settings, ICodecRegistry codecs, IFileDialogService openCodecDialog, IContentPlugInService pluginService, IViewModelInjection commonServices) : base(commonServices) { Settings = settings ?? throw new ArgumentNullException(nameof(settings)); Codecs = codecs ?? throw new ArgumentNullException(nameof(settings)); OpenCodecDialog = openCodecDialog ?? throw new ArgumentNullException(nameof(openCodecDialog)); ContentPlugInService = pluginService ?? throw new ArgumentNullException(nameof(pluginService)); }
/// <summary>Function to inject dependencies for the view model.</summary> /// <param name="injectionParameters">The parameters to inject.</param> /// <remarks> /// Applications should call this when setting up the view model for complex operations and/or dependency injection. The constructor should only be used for simple set up and initialization of objects. /// </remarks> protected override void OnInitialize(ImportPlugInSettingsParameters injectionParameters) { _messageDisplay = injectionParameters.MessageDisplay ?? throw new ArgumentMissingException(nameof(injectionParameters.MessageDisplay), nameof(injectionParameters)); _settings = injectionParameters.Settings ?? throw new ArgumentMissingException(nameof(injectionParameters.Settings), nameof(injectionParameters)); _plugInService = injectionParameters.ContentPlugInService ?? throw new ArgumentMissingException(nameof(injectionParameters.ContentPlugInService), nameof(injectionParameters)); _codecs = injectionParameters.Codecs ?? throw new ArgumentMissingException(nameof(injectionParameters.Codecs), nameof(injectionParameters)); _openCodecDialog = injectionParameters.OpenCodecDialog ?? throw new ArgumentMissingException(nameof(injectionParameters.OpenCodecDialog), nameof(injectionParameters)); _busyService = injectionParameters.BusyService ?? throw new ArgumentMissingException(nameof(injectionParameters.BusyService), nameof(injectionParameters)); foreach (GorgonSpriteCodecPlugIn plugin in _codecs.CodecPlugIns) { foreach (GorgonSpriteCodecDescription desc in plugin.Codecs) { IGorgonSpriteCodec codec = _codecs.Codecs.FirstOrDefault(item => string.Equals(item.GetType().FullName, desc.Name, StringComparison.OrdinalIgnoreCase)); if (codec == null) { continue; } CodecPlugInPaths.Add(new CodecSetting(codec.CodecDescription, plugin, desc)); } } }