Можете ли вы добавить объект в 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;

но мы позволили компилятору сделать работу за нас. Есть тонкие различия.

Другие вопросы по тегам