ControllerFactory, в которой контроллеры разделены в другом проекте

Мои контроллеры разделены в другом проекте, я использую замок Виндзор, и все было в порядке, у меня была типичная фабрика контроллеров в том же проекте, которая выполняет следующие действия:

        public WindsorControllerFactory()
    {
        container = new WindsorContainer(
                        new XmlInterpreter(new ConfigResource("castle")
                        )
                    );

        var controllerTypes = from t in Assembly.GetExecutingAssembly().GetTypes()
                          where typeof(IController).IsAssignableFrom(t)
                          select t;

        foreach (Type t in controllerTypes)
        {
            container.AddComponentLifeStyle(t.FullName, t, Castle.Core.LifestyleType.Transient);
        }
    }

Затем я хотел пересчитать фабрику в собственный "фреймворк", чтобы использовать его в будущих проектах. Но тогда исполняющая сборка не имеет контроллеров. Есть идеи, как ее отсоединить?

Я думал что-то вроде файла конфигурации, который указывает на сборку с контроллерами...

1 ответ

Решение

Прежде всего, я бы передал Assembly в качестве параметра конструктора, затем я бы создал фабричный метод:

public static IControllerFactory FromAssemblyContaining<T>()
{
    return new WindsorControllerFactory(typeof(T).Assembly);
}

А затем создайте свою фабрику контроллеров, используя:

WindsorControllerFactory.FromAssemblyContaining<some class, Global perhaps>();
Другие вопросы по тегам