コード例 #1
0
        private static IWindsorContainer GetContainer()
        {
            var currentFolder = AppDomain.CurrentDomain.BaseDirectory;
            var container     = new WindsorContainer();
            var installers    = new List <IWindsorInstaller>();

            container.Kernel.ComponentModelBuilder.AddContributor(new RequireRepositoryProperties());

            var windsorConfigFile = Path.Combine(currentFolder, "windsor.xml");

            if (File.Exists(windsorConfigFile))
            {
                installers.Add(Configuration.FromXmlFile(windsorConfigFile));
            }

            installers.AddRange(new[]
            {
                FromAssembly.InThisApplication(),
                FromAssembly.InDirectory(new AssemblyFilter(currentFolder,
                                                            "QuadAuto.Server.*.dll"))
            });

            container.Kernel.Resolver.AddSubResolver(new ArrayResolver(container.Kernel, true));
            container.Register(Component.For <ILazyComponentLoader>().ImplementedBy <LazyOfTComponentLoader>());
            container.Register(Component.For <IServerStart>().ImplementedBy <ServerStart>());
            container.Install(installers.ToArray());

            return(container);
        }
コード例 #2
0
ファイル: Program.cs プロジェクト: mthapa/LoggerDemo
        static void Main(string[] args)
        {
            var container = new WindsorContainer();

            container.Register(Component.For <IWindsorContainer>().Instance(container).LifeStyle.Singleton);
            container.Register(Component.For <IServiceLocator> ().ImplementedBy <WindsorServiceLocator>().LifeStyle.Singleton);

            container.Install(FromAssembly.This(),
                              FromAssembly.InDirectory(new AssemblyFilter(".", "*Logger*"))
                              );


            /*
             * foreach ( var handler in container.Kernel.GetAssignableHandlers(typeof(object)))
             * {
             *      Console.WriteLine("Registered: {0} for {1} (lifestyle: {2})",
             *              handler.ComponentModel.Implementation.FullName,
             *              String.Join(", ", handler.ComponentModel.Services.Select(t => t.FullName)),
             *              handler.ComponentModel.LifestyleType);
             * }
             */

            ServiceLocator.SetLocatorProvider(() => container.Resolve <IServiceLocator>());


            var logger = ServiceLocator.Current.GetInstance <ILogger>();

            logger.Log("Helo World");
            Console.ReadKey();
        }
コード例 #3
0
        /// <summary>
        ///     Initializes a new instance of the <see cref="Bootstrapper" /> class.
        /// </summary>
        public Bootstrapper()
        {
            try
            {
                this.container = new WindsorContainer();
                this.container.Kernel.Resolver.AddSubResolver(new CollectionResolver(this.container.Kernel, false));
                this.container.AddFacility <TypedFactoryFacility>();
                //this.container.AddFacility<LoggingFacility>(f => f.UseNLog());
                this.container.AddFacility <LoggingFacility>(f => f.LogUsing(LoggerImplementation.NLog)
                                                             .WithConfig("NLog.config"));
                // Types.FromAssemblyInThisApplication() ?
                //this.container.Install(FromAssembly.Containing<Bootstrapper>());
                //this.container.Install(FromAssembly.Named("Accelknife.Blades.Overview"));
                //this.container.Install(FromAssembly.InThisApplication());

                //this.container.Install(FromAssembly.InDirectory(new AssemblyFilter(Path.GetDirectoryName(Application.ExecutablePath))));
                this.container.Install(FromAssembly.InDirectory(new AssemblyFilter("", "Accelknife*")));

                //var eee = container.Resolve<IBladeTest>();
                //var encoderFactory = container.Resolve<IEncoderFactory>();
                //var encoder = encoderFactory.GetByName("Accelknife.Blades.RecodeMule.Encoding.FFmpeg");
                //var encoder = encoderFactory.GetByName("Mencoder");
            }
            catch (Exception ex)
            {
                //MessageBox.Show(ex.ToString());
            }
        }
コード例 #4
0
ファイル: Program.cs プロジェクト: kouweizhong/Azert.Pipeline
        static void Main(string[] args)
        {
            //Load IoC container
            var container = new WindsorContainer();

            // Grab all IoC installers in Bin dir
            container.Install(
                FromAssembly.InDirectory(new AssemblyFilter(Environment.CurrentDirectory))
                );

            // Resolve all filters and order according to the order property
            var filters = container.ResolveAll <IFilter>().OrderBy(f => f.Order);

            // Resolve the registered pipeline implementation
            var pipeline = container.Resolve <IPipeline>();

            //Load and execute pipeline
            Console.WriteLine("Pipeline starting");

            foreach (var filter in filters)
            {
                pipeline.Register(filter);
            }

            pipeline.Execute(args[0]);

            Console.WriteLine("Pipeline completed");
        }
コード例 #5
0
        /// <summary>
        /// Creates Windsor Container and installs components via all installers within application projects
        /// </summary>
        /// <returns></returns>
        public WindsorContainer Create()
        {
            var container = new WindsorContainer();

            container.Install(FromAssembly.InDirectory(ApplicationAssemblyHelper.AssemblyFilter));
            return(container);
        }
コード例 #6
0
ファイル: Startup.cs プロジェクト: tww19861004/fastSQL
        public Startup(IConfiguration configuration)
        {
            _container = new WindsorContainer();
            _container.Kernel.Resolver.AddSubResolver(new CollectionResolver(_container.Kernel, true));
            var assemblyDescriptor = Classes.FromAssemblyInDirectory(new AssemblyFilter(AppDomain.CurrentDomain.BaseDirectory));

            _container.Register(Component
                                .For <FromAssemblyDescriptor>()
                                .UsingFactoryMethod(() => assemblyDescriptor)
                                .LifestyleSingleton());
            _container.Register(Component.For <IWindsorContainer>().UsingFactoryMethod(() => _container).LifestyleSingleton());
            _container.Register(Component.For <DbConnection>().UsingFactoryMethod((p) => {
                var conf             = p.Resolve <IConfiguration>();
                var connectionString = conf.GetConnectionString("__MigrationDatabase");
                var conn             = new SqlConnection(connectionString);
                conn.Open();
                return(conn);
            }).LifestyleCustom <MsScopedLifestyleManager>());
            _container.Register(Component.For <DbTransaction>().UsingFactoryMethod((c) => {
                var conn = c.Resolve <DbConnection>();
                return(conn.BeginTransaction());
            }).LifestyleCustom <MsScopedLifestyleManager>());
            _container.Install(FromAssembly.InDirectory(new AssemblyFilter(AppDomain.CurrentDomain.BaseDirectory)));

            Configuration = configuration;
        }
コード例 #7
0
        public WindsorBootstrap()
        {
            var binPath = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);

            Container = new WindsorContainer();
            Container.Install(new WindsorInstaller(), FromAssembly.InDirectory(new AssemblyFilter(binPath)));
        }
コード例 #8
0
        public void Install_from_assembly_by_directory_with_fake_key_as_string_does_not_install()
        {
            var location = AppDomain.CurrentDomain.BaseDirectory;

            Container.Install(FromAssembly.InDirectory(new AssemblyFilter(location).WithKeyToken("1234123412341234")));
            Assert.IsFalse(Container.Kernel.HasComponent("Customer-by-CustomerInstaller"));
        }
コード例 #9
0
        public void Initialize(bool isHttpEnabled = false)
        {
            this.container.AddFacility <TypedFactoryFacility>().AddFacility <WcfFacility>(f => f.CloseTimeout = TimeSpan.Zero);

            ServiceMetadataBehavior metadata = new ServiceMetadataBehavior();

            if (isHttpEnabled)
            {
                metadata.HttpGetEnabled  = true;
                metadata.HttpsGetEnabled = true;
            }

            ServiceDebugBehavior returnFaults = new ServiceDebugBehavior()
            {
                IncludeExceptionDetailInFaults = true
            };

            this.container.Register(
                Component.For <IServiceBehavior>().Instance(metadata),
                Component.For <IServiceBehavior>().Instance(returnFaults));

            this.container.Install(FromAssembly.InDirectory(new AssemblyFilter(ConfigurationManager.AppSettings.Get("ExtensionFolder") ?? string.Empty)));

            this.kernel = this.container.Kernel;



            CheckCastleRegisterComponent();
        }
コード例 #10
0
 public static void InstallFrom(this IWindsorContainer container, IEnumerable <string> directories)
 {
     foreach (var dir in directories)
     {
         container.Install(FromAssembly.InDirectory(new AssemblyFilter(dir)));
     }
 }
コード例 #11
0
        public void Can_install_from_assembly_by_directory_simple()
        {
            var location = AppDomain.CurrentDomain.BaseDirectory;

            Container.Install(FromAssembly.InDirectory(new AssemblyFilter(location)));
            Container.Resolve <object>("Customer-by-CustomerInstaller");
        }
コード例 #12
0
ファイル: CopyDatabase.cs プロジェクト: vagwada/SqlCopy
        public static void Initialize()
        {
            var currentDir = Directory.GetCurrentDirectory();

            _container = new WindsorContainer();
            _container.Kernel.Resolver.AddSubResolver(new CollectionResolver(_container.Kernel, true));
            _container.Install(FromAssembly.InDirectory(new AssemblyFilter(currentDir)));
        }
コード例 #13
0
        /// <summary>
        /// Creates Windsor Container and installs components via all installers within application projects
        /// </summary>
        /// <returns></returns>
        public WindsorContainer Create()
        {
            var container = new WindsorContainer();

            container.Install(FromAssembly.InDirectory(ApplicationAssemblyHelper.AssemblyFilter));
            DependencyResolver.SetResolver(new MvcDependencyResolver(container));
            GlobalConfiguration.Configuration.DependencyResolver = new WebApiDependencyResolver(container);                 return(container);
        }
コード例 #14
0
 private static IWindsorContainer ContainerFactory()
 {
     return(new WindsorContainer()
            .AddFacility <LoggingFacility>(facility => facility.LogUsing(LoggerImplementation.NLog))
            .Install(Configuration.FromAppConfig())
            .Install(FromAssembly.This())
            .Install(FromAssembly.InDirectory(new AssemblyFilter("plugins"))));
 }
コード例 #15
0
        public static WindsorContainer BootstrapWindsor(string assemblyLocation)
        {
            container.AddFacility <StartableFacility>(facility => facility.DeferredStart());

            container.Install(FromAssembly.InDirectory(new AssemblyFilter(assemblyLocation)));

            return(container);
        }
コード例 #16
0
        public void Install_from_assembly_by_directory_ignores_non_existing_path()
        {
            var location = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, Guid.NewGuid().ToString("N"));

            Container.Install(FromAssembly.InDirectory(new AssemblyFilter(location)));

            Assert.AreEqual(0, Container.Kernel.GraphNodes.Length);
        }
コード例 #17
0
ファイル: WindsorSagaHost.cs プロジェクト: evenbing/EasyNetQ
        public void Start()
        {
            container = new WindsorContainer()
                        .Install(FromAssembly.InDirectory(new AssemblyFilter(sagaDirectory)));

            var sagas = container.ResolveAll <ISaga>();

            sagas.LogWith(log).InitializeWith(bus);
        }
コード例 #18
0
 protected void InitialiseContainer()
 {
     if (container == null)
     {
         container = new WindsorContainer()
                     .Install(
             Configuration.FromXmlFile("Windsor.xml"),
             FromAssembly.InDirectory(new AssemblyFilter(HttpRuntime.BinDirectory, "Suteki.*.dll")));
     }
 }
コード例 #19
0
        public Investigation Create(InvestigationInfo investigationInfo)
        {
            var chidWc = new WindsorContainer($"Investigation-{investigationInfo.InvestigationName}-{investigationInfo.Guid}", new DefaultKernel(), new DefaultComponentInstaller());

            this.Container.AddChildContainer(chidWc);
            chidWc.Register(Component.For <IInvestigationInfo, InvestigationInfo>().Instance(investigationInfo));
            chidWc.Register(Component.For <IWindsorContainer, WindsorContainer>().Instance(chidWc));
            chidWc.Install(FromAssembly.InDirectory(new AssemblyFilter("."), new InstallerFactoryFilter(typeof(IDetectiveIvestigationWindsorInstaller))));
            return(chidWc.Resolve <IInvestigationFactoryInternal>().Create(investigationInfo));
        }
コード例 #20
0
        void InitializeWindsor()
        {
            container = new WindsorContainer()
                        .Install(FromAssembly.This(),
                                 FromAssembly.InDirectory(new AssemblyFilter(HttpRuntime.BinDirectory, "*AddIn.dll")));

            var controllerFactory = Container.Resolve <IControllerFactory>();

            ControllerBuilder.Current.SetControllerFactory(controllerFactory);
        }
コード例 #21
0
        public static void Setup()
        {
            _container =
                new WindsorContainer().Install(
                    FromAssembly.InDirectory(new AssemblyFilter(AppDomain.CurrentDomain.RelativeSearchPath)));

            var controllerFactory = new WindsorControllerFactory(_container.Kernel);

            ControllerBuilder.Current.SetControllerFactory(controllerFactory);
        }
コード例 #22
0
        private static IWindsorContainer CreateContainer()
        {
            if (string.IsNullOrWhiteSpace(AssemblySearchPath))
            {
                throw new InvalidOperationException("AssemblySearchPath must be set to a valid directory path.");
            }
            var container = new WindsorContainer().Install(FromAssembly.InDirectory(new AssemblyFilter(AssemblySearchPath, "SSD.*"))).Install(FromAssembly.This());

            return(container);
        }
コード例 #23
0
 public WindsorContainerAdapter()
 {
     _container = new WindsorContainer();
     //addint suport for collections
     //http://stw.castleproject.org/Default.aspx?Page=Resolvers&NS=Windsor&AspxAutoDetectCookieSupport=1
     _container.Kernel.Resolver.AddSubResolver(new CollectionResolver(this._container.Kernel));
     this._container.Install(
         FromAssembly.InDirectory(new ApplicationAssemblyFilter())
         );
 }
コード例 #24
0
 public static void Bootstrap()
 {
     if (!bootstrapped)
     {
         WindsorContainer = new WindsorContainer();
         var assemblFilter = new AssemblyFilter(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "bin"));
         Descriptor = Classes.FromAssemblyInDirectory(assemblFilter);
         WindsorContainer.Install(FromAssembly.InDirectory(assemblFilter));
         bootstrapped = true;
     }
 }
コード例 #25
0
        public Bootstrapper RegisterComponents()
        {
            var appDomainDirectory = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
            var foundAssemblies    = FromAssembly.InDirectory(new AssemblyFilter(appDomainDirectory));

            Container.Install(foundAssemblies);

            //Hack: Register container itself
            Container.Register(Component.For <IWindsorContainer>().Instance(Container));

            return(this);
        }
コード例 #26
0
        // This method gets called by the runtime. Use this method to add services to the container.
        // For more information on how to configure your application, visit http://go.microsoft.com/fwlink/?LinkID=398940
        public IServiceProvider ConfigureServices(IServiceCollection services)
        {
            services.AddMvc();

            var container = new WindsorContainer();

            container.Install(FromAssembly.InDirectory(new AssemblyFilter(AppDomain.CurrentDomain.BaseDirectory)));

            container.Register(Component.For <IConfigurationRoot>().Instance(Configuration));

            return(WindsorRegistrationHelper.CreateServiceProvider(container, services));
        }
コード例 #27
0
ファイル: Global.asax.cs プロジェクト: yunis-ali/WebGitNet
        private static void Bootstrap()
        {
            var directoryFilter = new AssemblyFilter(HostingEnvironment.MapPath("~/Plugins"));

            container = new WindsorContainer()
                        .Install(new AssemblyInstaller())
                        .Install(FromAssembly.InDirectory(directoryFilter));

            var controllerFactory = new WindsorControllerFactory(container.Kernel);

            ControllerBuilder.Current.SetControllerFactory(controllerFactory);
        }
コード例 #28
0
ファイル: Global.asax.cs プロジェクト: nbl852003/iudico
        protected void InitializeWindsor()
        {
            _Container = new WindsorContainer();

            _Container
            .Register(
                Component.For <IWindsorContainer>().Instance(_Container))
            .Register(
                Component.For <ILmsService>().ImplementedBy <LmsService>().LifeStyle.Singleton)
            .Install(FromAssembly.This(),
                     FromAssembly.InDirectory(new AssemblyFilter(Server.MapPath("/Plugins"), "IUDICO.*.dll"))
                     );
        }
コード例 #29
0
        public void ConfigureContainer(IWindsorContainer container)
        {
            container.Kernel.Resolver.AddSubResolver(new CollectionResolver(container.Kernel, true));
            container.AddFacility <TypedFactoryFacility>();
            var location = AppContext.BaseDirectory;

            container.Install(
                FromAssembly.InDirectory(
                    new AssemblyFilter(location)
                    .FilterByName(a => a.Name.StartsWith("WindsorStartupError"))
                    )
                );
        }
コード例 #30
0
        public void Install_from_assembly_by_directory_empty_name_searches_currentDirectory()
        {
            var called = false;

            Container.Install(FromAssembly.InDirectory(new AssemblyFilter(string.Empty).FilterByAssembly(a =>
            {
                called = true;
                return(true);
            })));

            Assert.IsTrue(called);
            Assert.IsTrue(Container.Kernel.HasComponent("Customer-by-CustomerInstaller"));
        }