Использование MethodInvoker в бэкэнд-классе - PullRequest
2 голосов
/ 04 марта 2010

У меня есть внутренний класс, который должен вызывать событие без аргументов.MethodInvoker имеет желаемую подпись, но немного странно использовать ее в бэкэнд-классе, поскольку она определена в System.Windows.Forms.Есть ли другой делегат с этой подписью в других пространствах имен в .Net Framework?Если нет, то думаете ли вы, что я должен сам определить делегата с этой подписью или использовать вместо него MethodInvoker?

Ответы [ 2 ]

1 голос
/ 04 марта 2010

Если вы используете .NET 2.0:
Определите свой собственный тип делегата. Ссылка на сборку только для такого простого типа, на мой взгляд, не очень хорошая идея.

Многие фреймворки тоже так делают. Даже в mscorlib (2.0) их может быть несколько. Однако они могут находиться в более глубоких пространствах имен, использование которых может быть загадочным в сочетании с вашим классом.

Поэтому используйте свой собственный тип делегата вне .NET 3.5.

1 голос
/ 04 марта 2010

Если вы можете использовать .NET 3.5, есть делегат Action. Если нет, то вы всегда можете объявить, что (+ любые другие Action или Func делегаты, которые вы хотите) в классе Utils или аналогичном:

public delegate void Action();
public delegate void Action<T1, T2>(T1 arg0, T2 arg1);

public delegate TResult Func<T1, TResult>(T1 arg0);
public delegate TResult Func<T1, T2, TResult(T1 arg0, T2 arg1);

и т.д ...

Обратите внимание, что в .NET 2 уже есть делегат void Action<T>(T arg), но нет других

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...