Можете ли вы добавить объект в aC# watcher?
Когда я создаю наблюдателя, я хочу добавить к нему объект, который я могу прочитать во время события watchers_Created watchers?
1 ответ
Решение
Вы можете просто захватить это в анонимном делегате:
object o;
var watcher = new FileSystemWatcher();
watcher.Created += (sender, e) => {
Console.WriteLine(o);
// handle created event
};
Вот, o
представляет объект, который вы хотите захватить (он не должен быть напечатан как object
).
Обратите внимание, что это фактически так же, как
class Foo {
private readonly object o;
public Foo(object o) {
this.o = o;
}
public void OnCreated(object sender, FileSystemEventArgs e) {
Console.WriteLine(this.o);
// handle event
}
}
object o = null;
Foo foo = new Foo(o);
var watcher = new FileSystemWatcher();
watcher.Created += foo.OnCreated;
но мы позволили компилятору сделать работу за нас. Есть тонкие различия.