#c_sharp
Как организовать поле в классе, на которое можно будет потом навесить анонимную функцию? Мне нужно, чтобы в классе было поле, через которое я бы мог вызвать функцию, которая там определена Есть класс Process, в нём есть поле Name и Duration. Есть класс ProcessQueue, в котором есть поле Items и ItemIndex. Так вот, я имитирую какие-либо процессы, указываю их название и продолжительность. Затем засовываю Process с заданными полями в очередь в поле ProcessQueue.Items. По окончанию процесса, должна сработать заданная пользователем функция. Я хочу засунуть эту функцию, скажем, в поле Process.Callback. Как засунуть туда функцию и как её потом вызвать?
Ответы
Ответ 1
Для того, чтобы записать в поле класса функцию, всё равно анонимную или нет, вы должны создать поле делегатного типа. Для этого есть два основных пути: определение собственного делегата, или использование готового, имеющегося в системе. Предпочтительным методом является использование готового делегата. Например, если ваш callback должен принимать один аргумент типа int и не возвращать никакого значения, вам подойдёт тип Action: Action callback; Присваивание выглядит просто: callback = n => Console.WriteLine($"работа окончена, результат: {n}"); Вызов тоже очевиден: callback(5);
Комментариев нет:
Отправить комментарий