public IAssemblyScanner Load(IPluginRepository repository, ILogMessagesFromRemoteAppDomains logger)
        {
            try
            {
                var builder = new ContainerBuilder();
                {
                    builder.RegisterModule(new SchedulingModule());

                    builder.Register(c => new PartImportEngine(
                            c.Resolve<ISatisfyPluginRequests>()))
                        .As<IConnectParts>();

                    builder.RegisterInstance(repository)
                        .As<IPluginRepository>()
                        .As<ISatisfyPluginRequests>();
                }

                var container = builder.Build();

                Func<IBuildFixedSchedules> scheduleBuilder = () => container.Resolve<IBuildFixedSchedules>();
                return new RemoteAssemblyScanner(
                    container.Resolve<IPluginRepository>(),
                    container.Resolve<IConnectParts>(),
                    logger,
                    scheduleBuilder);
            }
            catch (Exception e)
            {
                logger.Log(LevelToLog.Error, e.ToString());
                throw;
            }
        }
        public IAssemblyScanner Load(IPluginRepository repository, ILogMessagesFromRemoteAppDomains logger)
        {
            try
            {
                var builder = new ContainerBuilder();
                {
                    builder.RegisterModule(new SchedulingModule());

                    builder.Register(c => new PartImportEngine(
                                         c.Resolve <ISatisfyPluginRequests>()))
                    .As <IConnectParts>();

                    builder.RegisterInstance(repository)
                    .As <IPluginRepository>()
                    .As <ISatisfyPluginRequests>();
                }

                var container = builder.Build();

                Func <IBuildFixedSchedules> scheduleBuilder = () => container.Resolve <IBuildFixedSchedules>();
                return(new RemoteAssemblyScanner(
                           container.Resolve <IPluginRepository>(),
                           container.Resolve <IConnectParts>(),
                           logger,
                           scheduleBuilder));
            }
            catch (Exception e)
            {
                logger.Log(LevelToLog.Error, e.ToString());
                throw;
            }
        }
예제 #3
0
        /// <summary>
        /// Initializes a new instance of the <see cref="RemoteAssemblyScanner"/> class.
        /// </summary>
        /// <param name="repository">The object that stores all the information about the parts and the part groups.</param>
        /// <param name="importEngine">The object that provides methods for part import matching.</param>
        /// <param name="logger">The object that passes through the log messages.</param>
        /// <param name="scheduleBuilder">The function that returns a schedule building object.</param>
        /// <exception cref="ArgumentNullException">
        ///     Thrown if <paramref name="repository"/> is <see langword="null" />.
        /// </exception>
        /// <exception cref="ArgumentNullException">
        ///     Thrown if <paramref name="importEngine"/> is <see langword="null" />.
        /// </exception>
        /// <exception cref="ArgumentNullException">
        ///     Thrown if <paramref name="logger"/> is <see langword="null" />.
        /// </exception>
        /// <exception cref="ArgumentNullException">
        ///     Thrown if <paramref name="scheduleBuilder"/> is <see langword="null" />.
        /// </exception>
        public RemoteAssemblyScanner(
            IPluginRepository repository,
            IConnectParts importEngine,
            ILogMessagesFromRemoteAppDomains logger,
            Func <IBuildFixedSchedules> scheduleBuilder)
        {
            {
                Lokad.Enforce.Argument(() => repository);
                Lokad.Enforce.Argument(() => importEngine);
                Lokad.Enforce.Argument(() => logger);
                Lokad.Enforce.Argument(() => scheduleBuilder);
            }

            m_Repository      = repository;
            m_ImportEngine    = importEngine;
            m_Logger          = logger;
            m_ScheduleBuilder = scheduleBuilder;
        }
예제 #4
0
        /// <summary>
        /// Initializes a new instance of the <see cref="RemoteAssemblyScanner"/> class.
        /// </summary>
        /// <param name="repository">The object that stores all the information about the parts and the part groups.</param>
        /// <param name="importEngine">The object that provides methods for part import matching.</param>
        /// <param name="logger">The object that passes through the log messages.</param>
        /// <param name="scheduleBuilder">The function that returns a schedule building object.</param>
        /// <exception cref="ArgumentNullException">
        ///     Thrown if <paramref name="repository"/> is <see langword="null" />.
        /// </exception>
        /// <exception cref="ArgumentNullException">
        ///     Thrown if <paramref name="importEngine"/> is <see langword="null" />.
        /// </exception>
        /// <exception cref="ArgumentNullException">
        ///     Thrown if <paramref name="logger"/> is <see langword="null" />.
        /// </exception>
        /// <exception cref="ArgumentNullException">
        ///     Thrown if <paramref name="scheduleBuilder"/> is <see langword="null" />.
        /// </exception>
        public RemoteAssemblyScanner(
            IPluginRepository repository,
            IConnectParts importEngine,
            ILogMessagesFromRemoteAppDomains logger,
            Func<IBuildFixedSchedules> scheduleBuilder)
        {
            {
                Lokad.Enforce.Argument(() => repository);
                Lokad.Enforce.Argument(() => importEngine);
                Lokad.Enforce.Argument(() => logger);
                Lokad.Enforce.Argument(() => scheduleBuilder);
            }

            m_Repository = repository;
            m_ImportEngine = importEngine;
            m_Logger = logger;
            m_ScheduleBuilder = scheduleBuilder;
        }