Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Замок Виндзор и регистрация типов из сборок памяти; Является ли это возможным?

Автор вопроса: BigtoeОтветов: 1

У нас есть приложение, которое при запуске компилирует несколько классов кода в несколько сборок в памяти. Я пытаюсь зарегистрировать эти типы в Castle Windsor, но не могу их создать; он говорит, что типы типов не могут быть найдены.

Кто-нибудь знает возможно ли это? Я использую файл конфигурации XML и скомпилировал DLL перед созданием экземпляра контейнера Windsor. Ниже приведен пример конфигурации, которую я использую; Я не указываю имя DLL в объявлении типа здесь, поскольку на диске нет физической DLL.

   <!-- Register the Filtering provider, which is specified in the custom script -->
    <component id="FilteringProvider"
               type="Optimus.Scripts.Filtering.FilteringProvider"
               service="Optimus.Filtering.Lib.IFilteringProvider, Optimus.Filtering.Lib"
               >
    </component>

С уважением, Ноэль

  • Вы пробовали регистрировать свои компоненты по коду? mathieu 19.04.2011
  • Я не пробовал через код; поскольку требуется внешняя регистрация. Я все равно попробую и посмотрю, смогу ли я добиться этого таким образом; но очень ищу внешнюю регистрацию. Bigtoe 19.04.2011
  • не по теме, но мне очень любопытно, зачем вам нужна регистрация в конфиге? Krzysztof Kozmic 20.04.2011
  • У нас есть требование, чтобы у нас были части нашего приложения, поддерживающие скрипты. Мы позволяем это путем предварительной компиляции настраиваемых файлов C #, которые предоставляют фиксированный интерфейс службы, который мы предоставляем. Мы не занимаемся именами компонентов или пространств имен; поскольку они будут зависеть от клиента; но нам нужен был способ позволить клиенту настроить сценарии в соответствии с тем, что они разработали. В то время конфигурация XML казалась самой простой. Если есть другие подходы, я был бы рад их рассмотреть. Bigtoe 20.04.2011

castle-windsor

Ответы

Ответ 1 · рейтинг 1 · mathieu

Вы можете зарегистрировать компоненты из кода в конкретной сборке:

container.Register(
    AllTypes.Of<IService>()
    .FromAssembly(myAssemly));

Здесь вы передадите свою динамически скомпилированную сборку.

http://docs.castleproject.org/Windsor.Registering-components-by-conventions.ashx

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы