![]() |
|
Модераторы: Partizan, gambit |
![]()
|
|
| _hunter |
|
||||||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 8564 Регистрация: 24.6.2003 Где: Europe::Ukraine:: Kiev Репутация: 2 Всего: 98 |
Добрый день.
Понадобилось сделать коллекцию, члены которой должны уведомлять ее о своих изменениях:
так:
я подписываюсь на уведомления... обработчик:
класс поля
но проблема в том, что на строке field.Changes += new DataField.FieldChangedEventHandler(FieldChanged); я получаю ошибку "No overload for 'FieldChanged' matches delegate 'DataField.FieldChangedEventHandler'" Что тут можно сделать? С уважением... -------------------- Tempora mutantur, et nos mutamur in illis... |
||||||||
|
|||||||||
| marcusmae |
|
|||
![]() stravaganza ![]() ![]() Профиль Группа: Участник Сообщений: 874 Регистрация: 26.3.2006 Репутация: 22 Всего: 39 |
_hunter, эта ошибка означает, что сигнатура метода FieldChanged не соответствует той, что требует делегат FieldChangedEventHandler. То есть, нужно поправить типы параметров метода FieldChanged : у Вас в одном месте T, а в другом - DataField.
-------------------- ἀπὸ μηχανῆς θεός |
|||
|
||||
| _hunter |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 8564 Регистрация: 24.6.2003 Где: Europe::Ukraine:: Kiev Репутация: 2 Всего: 98 |
Что эта ошибка означает я знаю
Не понятно почему не работает именно мой вариант -- я, ведь, тип generic'а указываю: where T : DataField... -------------------- Tempora mutantur, et nos mutamur in illis... |
|||
|
||||
| marcusmae |
|
|||
![]() stravaganza ![]() ![]() Профиль Группа: Участник Сообщений: 874 Регистрация: 26.3.2006 Репутация: 22 Всего: 39 |
_hunter, если не спрашивать, какой будет толк от желаемой конструкции, то дженерик можно воткнуть прямо в делегат. Но тогда функциональность по добавлению-удалению события возможно придётся прописывать вручную через аксессоры add/remove и приводить там типы что ли...
Это сообщение отредактировал(а) marcusmae - 24.3.2008, 20:05 -------------------- ἀπὸ μηχανῆς θεός |
|||
|
||||
| _hunter |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 8564 Регистрация: 24.6.2003 Где: Europe::Ukraine:: Kiev Репутация: 2 Всего: 98 |
Какой толк?.. -- Коллекция будет знать о изменениях своих членов...
Насчет воткнуть в делегат: это как? public class DataField<T> { public delegate void FieldChangedEventHandler (T changedField, StateTypes changeType); -- так DataField это вполне обычный класс... Шаблонность ему совсем не нужна... -------------------- Tempora mutantur, et nos mutamur in illis... |
|||
|
||||
| marcusmae |
|
||||
![]() stravaganza ![]() ![]() Профиль Группа: Участник Сообщений: 874 Регистрация: 26.3.2006 Репутация: 22 Всего: 39 |
По идеи, да, но в момент связывания с обработчиком, требуется точное знание типа :
Применение :
Корявенько -------------------- ἀπὸ μηχανῆς θεός |
||||
|
|||||
![]()
|
| Прежде чем создать тему, посмотрите сюда: | |
|
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |