Prolems Подключение подписчиков на события в Castle.Windsor Framework - PullRequest
0 голосов
/ 09 марта 2009

У меня проблемы с подключением событий для моих компонентов Castle.Windsor IoV. Несмотря на то, что я подтвердил методы и подписи для них, он вызывает исключение с сообщением «Объект не соответствует типу цели».

Может ли кто-нибудь объяснить, какой именно объект его ожидал?

Моя проводка выглядит так:

  <component
    id="mailManager"
    service="Pop3Dispatcher.Mail.IMailManager, Pop3Dispatcher"
    type="Pop3Dispatcher.Mail.DefaultMailManagerImpl, Pop3Dispatcher"
    startable="true"
    loadCompletedMethod="Init">
    <subscribers>
      <subscriber id="emailFilterImpl" event="MessageRecieved" handler="OnReceivedMessage"/>
    </subscribers>
  </component>

  <component 
    id="emailFilterImpl" 
    service="Pop3Dispatcher.Filters.IFilter, Pop3Dispatcher"
    type="Pop3Dispatcher.Filters.EmailFilterImpl, Pop3Dispatcher" 
    startable="true">
  </component>

Прежде чем кто-нибудь спросит, да, я включил:

<facilities>

  <facility
      id="event.wiring"
      type="Castle.Facilities.EventWiring.EventWiringFacility, Castle.MicroKernel" />

</facilities>

1 Ответ

0 голосов
/ 09 марта 2009

Хорошо, проблема решена, по-видимому, в этом случае порядок объявления имеет значение. Алос, он не поддерживает "сервисы" и должен быть напрямую подписан на тип.

  <component 
    id="emailFilterImpl" 
    type="Pop3Dispatcher.Filters.EmailFilterImpl, Pop3Dispatcher" 
    startable="true">
  </component>

  <component
    id="mailManager"
    type="Pop3Dispatcher.Mail.DefaultMailManagerImpl, Pop3Dispatcher"
    startable="true"
    loadCompletedMethod="Init">
    <subscribers>
      <subscriber id="emailFilterImpl" event="MessageRecieved" handler="OnReceivedMessage"/>
    </subscribers>
  </component>
...