首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从接口实现自定义事件处理程序

从接口实现自定义事件处理程序
EN

Stack Overflow用户
提问于 2017-06-05 09:55:12
回答 1查看 3.6K关注 0票数 1

我正在创建一个系统,它可以接收来自各种不同来源的消息。

使用interface方法,我将添加一个自定义事件,它将消息传递回调用应用程序。

我使用Vistual的“脚手架”使用Ctrl-.为具体类提供实现,但它添加了addremove元素,但我不知道如何将其连接起来。

接口类

代码语言:javascript
复制
public class MessageEventArgs : EventArgs
{
    public Message { get; set; }
}

public interface MessageBroker
{
    void Start();

    event EventHandler<MessageEventArgs> OnMessageReceived;
}

实现类

代码语言:javascript
复制
public class MessageSourceA : MessageBroker
{
    event EventHandler<MessageEventArgs> MessageBroker.OnMessageReceived
    {
        add
        {
            // What goes here
        }

        remove
        {
            // What goes here
        }
    }

    void MessageBroker.Start()
    {
    }
}

主程序

代码语言:javascript
复制
    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
    }

谢谢..。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-06-05 10:07:51

您通常可以从接口实现。

代码语言:javascript
复制
public class MessageSourceA : IMessageBroker
{ 
    public void Start(); 
    public event EventHandler<MessageEventArgs> OnMessageReceived;
 }

我建议您将MessageBroker重命名为IMessageBroker,作为它的命名约定。因为在查看代码时,"I“有助于区分类和接口。

如果有正确的理由显式地实现接口,则需要私有事件处理程序。

代码语言:javascript
复制
private event EventHandler<MessageEventArgs> _onMessageReceived;

event EventHandler<MessageEventArgs> MessageBroker.OnMessageReceived 
{ 
    add 
    { 
        _onMessageRecieved += value;
    }
    remove 
    { 
        _onMessageRecieved -= value; 
    }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44366270

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档