我在使用接口 MessageDeserializer
的 IDeserializer<DpdMessage>
类中创建了以下事件:
public event Action<int> OnUnsupportedMessage;
当我现在尝试通过将 IDeserializer<DpdMessage>
注入构造函数来订阅我的 Health 类中的事件时:
public Health(IDeserializer<DpdMessage> msg)
{
_msg = msg;
_msg.OnUnsupportedMessage += OnMessage;
}
我收到此错误:
<块引用>错误 CS1061“IDeserializer”不包含“OnUnsupportedMessage”的定义,并且找不到接受“IDeserializer”类型的第一个参数的可访问扩展方法“OUnsupportedMessage”(您是否缺少 using 指令或程序集引用?)
我不能简单地将事件添加到界面中,因为它位于外部包中。
如何订阅我的活动?
答案 0 :(得分:1)
您在 OnUnsupportedMessage
中定义了 MessageDeserializer
,因此只有此类(或其子类)的实例才会具有此事件。
如果您无法控制 IDeserializer<DpdMessage>
接口,您可以尝试将其转换为您的类:
if (msg is MessageDeserializer m)
m.OnUnsupportedMessage += OnMessage;
答案 1 :(得分:0)
您可以通过声明自己的接口来扩展接口,以添加您需要的事件功能。如果您执行了类似于以下代码的操作,则可以注入此接口,而不是从外部包中注入的接口。
httpHeaders.set("keyvalue","keyvalue");
httpHeaders.add("keyvalue","keyvalue");