public DefaultInstallationStrategy(IMainAssemblyProvider mainAssemblyProvider,
                                           IPluginAssembliesProvider pluginAssembliesProvider, InstallerFactory installerFactory)
        {
            if (mainAssemblyProvider == null)
            {
                throw new ArgumentNullException(nameof(mainAssemblyProvider));
            }

            if (pluginAssembliesProvider == null)
            {
                throw new ArgumentNullException(nameof(pluginAssembliesProvider));
            }

            if (installerFactory == null)
            {
                throw new ArgumentNullException(nameof(installerFactory));
            }

            MainAssemblyProvider     = mainAssemblyProvider;
            PluginAssembliesProvider = pluginAssembliesProvider;
            InstallerFactory         = installerFactory;
        }
 public DefaultInstallationStrategy(IMainAssemblyProvider mainAssemblyProvider,
                                    IPluginAssembliesProvider pluginAssembliesProvider) : this(mainAssemblyProvider, pluginAssembliesProvider,
                                                                                               new InstallerFactory())
 {
 }
 public DefaultInstallationStrategy(IMainAssemblyProvider mainAssemblyProvider) : this(mainAssemblyProvider,
                                                                                       new DefaultPluginAssembliesProvider(), new InstallerPriority())
 {
 }