Почему Castle Windsor в этом простом примере генерирует исключение ComponentNotFoundException? - PullRequest
0 голосов
/ 29 сентября 2011

Я только начинаю работу с Castle Windsor IoC, и мне трудно следовать примерам.Может кто-нибудь объяснить, почему это простое консольное приложение не работает?Должно быть, я что-то упускаю.Спасибо.

using System;
using Castle.MicroKernel.Registration;
using Castle.MicroKernel.SubSystems.Configuration;
using Castle.Windsor;
using Castle.Windsor.Installer;

namespace CastleTest
{
    public interface ISomething
    {
        void DoSomething();
    }

    public class Something : ISomething
    {
        public void DoSomething()
        {
            Console.WriteLine("Hello World");
        }
    }

    public class SomethingInstaller : IWindsorInstaller
    {
        public void Install(IWindsorContainer container, IConfigurationStore store)
        {
            container.Register(AllTypes.FromThisAssembly().BasedOn<ISomething>());
        }
    }

    class Program
    {
        static void Main()
        {
            using (var container = new WindsorContainer())
            {
                container.Install(FromAssembly.This());

                // the following line throws a ComponentNotFoundException
                var something = container.Resolve<ISomething>();

                something.DoSomething();
            }
        }
    }
}

1 Ответ

2 голосов
/ 29 сентября 2011

Неважно, я нашел проблему.

Установщик должен зарегистрировать сервис. Это исправлено:

public void Install(IWindsorContainer container, IConfigurationStore store)
{
    container.Register(AllTypes.FromThisAssembly().BasedOn<ISomething>()
                       .WithService.DefaultInterface()
                      );
}
...