如何使用匿名方法动态订阅事件?

发布于 2024-07-30 17:44:16 字数 778 浏览 2 评论 0原文

我正在使用 LoadControl(String) 动态创建多个 UserControl,并希望订阅每个用户的事件。

我的所有控件都继承了一个公共接口,需要实现一个公共事件

public interface IObjectProcessor
{
    event EventHandler<ObjectProcessedEventArgs> ObjectProcessed;
}

所以我接下来在页面加载事件上做:

protected void Page_Load()
{
   switch(Request["type"])
   {
     case "user":
     {
        LoadControl("AddUser.ascx", delegate(object sender, ObjectProcessedEventArgs e)
        {
           // do something
        });
        break;
     }
   }
}

private void LoadControl(string path, Action<object, ObjectProcessedEventArgs> action)
{
    var control = (IObjectProcessor)LoadControl(path)
    control.ObjectProcessed // here!
}

如何订阅此事件的委托?

I'm creating a number of UserControls dynamically using LoadControl(String) and want to subscribe to an event of each of them.

All my controls inherits a common Interface that require an implementation of a common Event:

public interface IObjectProcessor
{
    event EventHandler<ObjectProcessedEventArgs> ObjectProcessed;
}

So I do next on my page loading event:

protected void Page_Load()
{
   switch(Request["type"])
   {
     case "user":
     {
        LoadControl("AddUser.ascx", delegate(object sender, ObjectProcessedEventArgs e)
        {
           // do something
        });
        break;
     }
   }
}

private void LoadControl(string path, Action<object, ObjectProcessedEventArgs> action)
{
    var control = (IObjectProcessor)LoadControl(path)
    control.ObjectProcessed // here!
}

How to subscribe a deleagte to this event?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

浸婚纱 2024-08-06 17:44:16

Action 更改为 EventHandler

private void LoadControl(string path, EventHandler<ObjectProcessedEventArgs> handler)
{
        var control = (IObjectProcessor)LoadControl(path)
        control.ObjectProcessed += handler;
}

Change Action<object, ObjectProcessedEventArgs> to EventHandler<ObjectProcessedEventArgs>:

private void LoadControl(string path, EventHandler<ObjectProcessedEventArgs> handler)
{
        var control = (IObjectProcessor)LoadControl(path)
        control.ObjectProcessed += handler;
}
烟凡古楼 2024-08-06 17:44:16
control.ObjectProcessed += action
control.ObjectProcessed += action
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文