Можете ли вы добавить объект в ac # watcher? - PullRequest
0 голосов
/ 13 января 2011

Когда я создаю наблюдателя, я хочу добавить к нему объект, который я могу прочитать во время события watcher_Created наблюдателей?

1 Ответ

4 голосов
/ 13 января 2011

Вы можете просто захватить его в анонимном делегате:

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;

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

...