我正在使用 LoadControl(String)
动态创建多个 UserControl
,并希望订阅其中每个控件的事件。
我的所有控件都继承了一个通用的接口(interface)
,它需要实现一个通用的事件
:
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;
}
关于c# - 如何使用匿名方法动态订阅事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1278217/