我正在创建一个可以接收来自各种不同来源的消息的系统。
使用interface
方法,我正在添加一个自定义事件,该事件会将消息传递回调用应用程序。
我使用过Vistual Studio"脚手架"使用Ctrl-.
为具体类提供实现,但它添加了add
和remove
元素,但我真的不知道如何连接这一点。
接口类
public class MessageEventArgs : EventArgs
{
public Message { get; set; }
}
public interface MessageBroker
{
void Start();
event EventHandler<MessageEventArgs> OnMessageReceived;
}
实施班级
public class MessageSourceA : MessageBroker
{
event EventHandler<MessageEventArgs> MessageBroker.OnMessageReceived
{
add
{
// What goes here
}
remove
{
// What goes here
}
}
void MessageBroker.Start()
{
}
}
主程序
static void Main(string[] args)
{
MessageBroker sourceA = new MessageSourceA ();
sourceA.OnMessageReceived += sourceA_OnMessageReceived;
}
private static void sourceA_OnMessageReceived(object sender, MessageEventArgs e)
{
// Do stuff with message
}
...谢谢
答案 0 :(得分:1)
您通常可以从界面实施。
public class MessageSourceA : IMessageBroker
{
public void Start();
public event EventHandler<MessageEventArgs> OnMessageReceived;
}
我建议您将MessageBroker重命名为IMessageBroker作为其命名约定。因为“I”在查看代码时有助于区分类和接口。
如果有正确的原因明确实现接口,则需要私有事件处理程序。
private event EventHandler<MessageEventArgs> _onMessageReceived;
event EventHandler<MessageEventArgs> MessageBroker.OnMessageReceived
{
add
{
_onMessageRecieved += value;
}
remove
{
_onMessageRecieved -= value;
}
}