我正在创建一个系统,它可以接收来自各种不同来源的消息。
使用interface方法,我将添加一个自定义事件,它将消息传递回调用应用程序。
我使用Vistual的“脚手架”使用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
}谢谢..。
发布于 2017-06-05 10:07:51
您通常可以从接口实现。
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;
}
}https://stackoverflow.com/questions/44366270
复制相似问题