0

我正在尝试将 bbv.common.EventBroker 与 Ninject 一起使用,但在正确连接时遇到了一些问题。

我目前正在使用 Ninject 工厂创建一个项目,然后,因为我订阅了事件,所以使用事件代理进行订阅。但是,当调用 register 方法时,我得到一个错误,我根本找不到任何信息。我什至不确定错误是什么意思。

错误:

bbv.Common.EventBroker.Exceptions.RepeatedSubscriptionException 发生消息=不能为同一订阅者添加多个订阅处理程序方法一个主题:“方法 1”。Source=bbv.Common.EventBroker StackTrace:在 bbv.Common.EventBroker.Internals.EventTopic.ThrowIfRepeatedSubscription(对象订阅者,字符串 handlerMethodName)在 bbv.Common.EventBroker.Internals.EventTopic.AddSubscription(对象订阅者,MethodInfo handlerMethod,IHandler 处理程序, IList`1 subscriptionMatchers) 在 bbv.Common.EventBroker.Internals.EventInspector.HandleSubscriber(对象订阅者,布尔寄存器,MethodInfo methodInfo,EventSubscriptionAttribute attr,IEventTopicHost eventTopicHost) 在 bbv.Common.EventBroker.Internals.EventInspector.ProcessSubscriber(对象订阅者,布尔登记,
内部异常:

代码:

public const string Topic1 = "Topic1";
public const string Topic2 = "Topic2";
public const string Topic3 = "Topic3";
public const string Topic4 = "Topic4";

public ItemHelper(IItem item, IEventBroker eventBroker)
{
  _item = item;
  eventBroker.Register(this);
}

[EventSubscription(Topic1, typeof(bbv.Common.EventBroker.Handlers.Publisher))]
public void Method1(object sender, SomeArgs1 args)
{
  ...
}

[EventSubscription(Topic2, typeof(bbv.Common.EventBroker.Handlers.Publisher))]
public void Method2(object sender, SomeArgs2 args)
{
  ...
}

[EventSubscription(Topic3, typeof(bbv.Common.EventBroker.Handlers.Publisher))]
public void Method3(object sender, SomeArgs3 args)
{
  ...
}

[EventSubscription(Topic4, typeof(bbv.Common.EventBroker.Handlers.Publisher))]
public void Method4(object sender, SomeArgs4 args)
{
  ...
}
4

1 回答 1

1

事实证明,该类有一个接口,其方法具有 [EventSubscription] 属性。既然我知道了这一点,错误消息确实更有意义。

于 2012-06-18T23:35:06.133 回答