繁体   English   中英

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

[英]How to subscribe to an event dynamically using anonymous methods?

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

我所有的控件都继承了一个公共Interface ,该Interface需要实现一个公共Event

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!
}

如何订阅此事件?

Action<object, ObjectProcessedEventArgs>更改为EventHandler<ObjectProcessedEventArgs>

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM