Configuring Castle Windsor¶
The first thing we need to do when configuring Castle Windsor is add a reference to the Miruken.Castle nuget package:
Install-Package Miruken.Castle
Note
Full documentation covering Miruken.Castle is here.
Installing Mediator¶
The MediatorInstaller lives in Miruken.Mediate.Castle so add a reference to its nuget package:
Install-Package Miruken.Mediate.Castle
In the Container.Install() method, add your feature assemblies, and then pass in an instance of MediatorInstaller.
namespace Example.Configuration
{
    using Castle.MicroKernel.Resolvers.SpecializedResolvers;
    using Castle.Windsor;
    using Miruken.Castle;
    using Miruken.Mediate.Castle;
    public class InstallingMediator
    {
        public IWindsorContainer Container { get; set; }
        public InstallingMediator()
        {
            Container = new WindsorContainer();
            Container.Kernel.Resolver.AddSubResolver(
                new CollectionResolver(Container.Kernel, true));
            Container.Install(new FeaturesInstaller(
                new MediateFeature().WithStandardMiddleware()));
        }
    }
}
Installing Validation Middleware¶
The ValidationInstalling lives in the Miruken.Validate.Castle so add a reference to its nuget package:
Install-Package Miruken.Validate.Castle
In the Container.Install() method, add your feature assemblies, and then pass in an instance of ValidationInstaller.
namespace Example.Configuration
{
    using Castle.MicroKernel.Registration;
    using Castle.MicroKernel.Resolvers.SpecializedResolvers;
    using Castle.Windsor;
    using League.Api.Team;
    using Miruken.Castle;
    using Miruken.Mediate.Castle;
    using Miruken.Validate.Castle;
    public class InstallingValidateMiddleware
    {
        public IWindsorContainer Container { get; set; }
        public InstallingValidateMiddleware()
        {
            Container = new WindsorContainer();
            Container.Kernel.Resolver.AddSubResolver(
                new CollectionResolver(Container.Kernel, true));
            Container.Install(new FeaturesInstaller(
                new MediateFeature().WithStandardMiddleware(),
                new ValidateFeature()).Use(
                    Classes.FromAssemblyContaining<CreateTeam>()));
        }
    }
}