根据类型添加EventHandler

时间:2010-08-25 06:40:51

标签: c# .net events generics

我有一些对象列表,其中包含有关静态EventHandler应该监听whitch文件夹的类的信息。我知道这不起作用,但你会明白这一点......

(eventhandler不一定是静态的,类也可以是单例,但不知怎的,我必须根据指定的类型添加一个EventHandler)

foreach (Service s in InitialParams.Services)
{
    FileSystemWatcher w = new FileSystemWatcher(s.WatchFolder);
    w.Created += new FileSystemEventHandler(s.Type.GetMethod("FileAdded")); //This doesn't work
    w.EnableRaisingEvents = true;
    watchers.Add(w);
}

1 个答案:

答案 0 :(得分:3)

使用Delegate.CreateDelegate(Type, MethodInfo)

MethodInfo method = s.Type.GetMethod("FileAdded");
var handler = (FileSystemEventHandler) Delegate.CreateDelegate
     (typeof(FileSystemEventHandler), method);
w.Created += handler;