var container = new WindsorContainer();
container.Register(Component.For<SauceBéarnaise>());
SauceBéarnaise sauce = container.Resolve<SauceBéarnaise>();

var container = new WindsorContainer();
container.Register(Component
.For<IIngredient>()
.ImplementedBy<SauceBéarnaise>());
IIngredient ingredient = container.Resolve<IIngredient>();

return (IController)this.container.Resolve(controllerType);

container.Register(Component
.For<SauceBéarnaise, IIngredient>());

container.Register(AllTypes
.FromAssemblyContaining<Steak>()
.BasedOn<IIngredient>());


container.Register(AllTypes
.FromAssemblyContaining<SauceBéarnaise>()
.Where(t => t.Name.StartsWith("Sauce"))
.WithService.AllInterfaces());

 

container.Install(Configuration.FromAppConfig());
<configSections>
<section name="castle"
type="Castle.Windsor.Configuration.AppDomain
?.CastleSectionHandler, Castle.Windsor" />
</configSections>
<castle>


<components>
<component />
</components>
</castle>


public interface IWindsorInstaller
{
void Install(IWindsorContainer container, IConfigurationStore store);
}

public class IngredientInstaller : IWindsorInstaller
{
public void Install(IWindsorContainer container,
IConfigurationStore store)
{
container.Register(AllTypes
.FromAssemblyContaining<Steak>()
.BasedOn<IIngredient>());
}
}

container.Install(new IngredientInstaller());

<installers>
<install type="IngredientInstaller" />
</installers>

Castle Windsor lifestyles
Name Comments

Singleton This is Castle Windsor’s default lifestyle.
Transient A new instance is created each time, but the instance is still tracked by
the container.
PerThread One instance is created per thread.
PerWebRequest Requires registration in web.config (see section 10.2.2).
Pooled Configuration of pool size will often be advisable (see section 10.2.2).
Custom Write your own custom lifestyle (see section 10.2.3).

container.Register(Component
.For<SauceBéarnaise>()
.LifeStyle.Transient);


<component />

container.Release(ingredient);


container.Register(Component
.For<IIngredient>()
.ImplementedBy<SauceBéarnaise>()
.LifeStyle.PooledWithSize(10, 50));

container.Register(Component
.For<IIngredient>()
.ImplementedBy<SauceBéarnaise>()
.LifeStyle.PerWebRequest);

Add ‘<add name="PerRequestLifestyle" type="Castle.MicroKernel.Lifestyle.PerWebRequest-
LifestyleModule, Castle.Windsor" />’ to the <httpModules> section on your web.config. If
you’re running IIS7 in Integrated Mode you will need to add it to <modules> section under
<system.webServer>

Working with multiple components


container.Register(Component

.For<IIngredient>()
.ImplementedBy<Steak>()
.Named("meat"));
container.Register(Component
.For<IIngredient>()
.ImplementedBy<SauceBéarnaise>()
.Named("sauce"));

You can give each registration a unique name that can later be used to distinguish this
particular component from other components.
Given the named components in listing 10.5, you can resolve both Steak and
SauceBéarnaise like this:

var meat = container.Resolve<IIngredient>("meat");
var sauce = container.Resolve<IIngredient>("sauce");


<configuration>

<include uri="uri1" />
<include uri="uri2" />

<properties>
<connection_string>value here</connection_string>
</properties>

<facilities>

<facility >

<parameters>
<paramtername>value</paramtername>
</parameters>

<interceptors>
<interceptor>${interceptor.id}</interceptor>
</interceptors>

</component>

</components>

</configuration>

相关文章:

  • 2021-11-27
  • 2021-11-16
  • 2022-12-23
  • 2021-11-21
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-02-09
猜你喜欢
  • 2021-07-13
  • 2021-09-06
  • 2021-10-31
  • 2021-08-20
  • 2021-05-16
相关资源
相似解决方案