Use Type for writable media image plugin list.

This commit is contained in:
2022-12-17 19:50:32 +00:00
parent 067370bc62
commit d59cbb56e1
8 changed files with 76 additions and 43 deletions

View File

@@ -520,19 +520,24 @@ sealed class ConvertImageCommand : Command
// Try extension
if(string.IsNullOrEmpty(format))
candidates.AddRange(plugins.WritableImages.Values.Where(t =>
t.KnownExtensions.
Contains(Path.GetExtension(outputPath))));
candidates.AddRange(from pluginType in plugins.WritableImages.Values
select Activator.CreateInstance(pluginType) as IBaseWritableImage into plugin
where plugin is not null
where plugin.KnownExtensions.Contains(Path.GetExtension(outputPath)) select plugin);
// Try Id
else if(Guid.TryParse(format, out Guid outId))
candidates.AddRange(plugins.WritableImages.Values.Where(t => t.Id.Equals(outId)));
candidates.AddRange(from pluginType in plugins.WritableImages.Values
select Activator.CreateInstance(pluginType) as IBaseWritableImage into plugin
where plugin is not null where plugin.Id.Equals(outId) select plugin);
// Try name
else
candidates.AddRange(plugins.WritableImages.Values.Where(t => string.Equals(t.Name, format,
StringComparison.
InvariantCultureIgnoreCase)));
candidates.AddRange(from pluginType in plugins.WritableImages.Values
select Activator.CreateInstance(pluginType) as IBaseWritableImage into plugin
where plugin is not null
where plugin.Name.Equals(format, StringComparison.InvariantCultureIgnoreCase)
select plugin);
switch(candidates.Count)
{