Потому что это может быть что угодно, что при открытом контексте с бд не очень здорово. Т.е. какой-то сложный алгоритм,
Thread.Sleep, task.delay и т.д. Т.е. лучше передавать результат работы делегата\задачи, а не саму задачу.
S>Т.е. лучше передавать результат работы делегата\задачи, а не саму задачу.
Внутри метода Bar используется AmbientContext, передать результат работы `func` не получится.
Підтримати Україну у боротьбі з країною-терористом.
Здравствуйте, Sharov, Вы писали:
S>Здравствуйте, #John, Вы писали:
J>>Внутри метода Bar используется AmbientContext, передать результат работы `func` не получится.
S>Не увидел. Тогда с виртуальным методом было бы лучше -- больше надо сделать, чтобы сделать что-то не то. S>Как минимум наследоваться.
Можно же создать наследника, принимающего делегат. Получится то же самое, но чуть страньше.
Здравствуйте, samius, Вы писали:
S>>Не увидел. Тогда с виртуальным методом было бы лучше -- больше надо сделать, чтобы сделать что-то не то. S>>Как минимум наследоваться. S>Можно же создать наследника, принимающего делегат. Получится то же самое, но чуть страньше.
Речь о том, что никакого параметра делегата у наследника не будет, только контекст.
Здравствуйте, Sharov, Вы писали:
S>Здравствуйте, samius, Вы писали:
S>>>Не увидел. Тогда с виртуальным методом было бы лучше -- больше надо сделать, чтобы сделать что-то не то. S>>>Как минимум наследоваться. S>>Можно же создать наследника, принимающего делегат. Получится то же самое, но чуть страньше.
S>Речь о том, что никакого параметра делегата у наследника не будет, только контекст.
Что помешает создать наследника, принимающего делегат? Как с IDisposable и Action, который только ленивый не обернул?
Здравствуйте, samius, Вы писали:
S>>Речь о том, что никакого параметра делегата у наследника не будет, только контекст. S>Что помешает создать наследника, принимающего делегат? Как с IDisposable и Action, который только ленивый не обернул?
Так func(foo) будет виртуальным методом класса, без каких-либо делегатов.
Здравствуйте, #John, Вы писали:
J>почему передавать так делегат в функцию плохой тон?
Нормальный тон.
J>Если `func` вынести в отдельный виртуальный метод, код станет лучше?
Станет хуже. Ибо в коде станет больше грязи.
... << RSDN@Home 1.0.0 alpha 5 rev. 0>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Здравствуйте, WolfHound, Вы писали:
J>>Если `func` вынести в отдельный виртуальный метод, код станет лучше? WH>Станет хуже. Ибо в коде станет больше грязи.
Получается так, потому что будет два отдельных метода, которые будут нарушать soLid.
С другой стороны когда мы передаем делегат как параметр — мы всего навсего передает "интерфейс" к коду который скрыт за делегатом, потому с solid тут все ок.
Думаю в варианте с делегатом не хватает только хороших xml комментариев.
Вместо делегата можно передавать интерфейс с каким-то методом, но в этом случае придется реализовывать этот интерфейс, но зато будут описаны более строгие правила по передачи правильного объекта.
Підтримати Україну у боротьбі з країною-терористом.
J>Думаю в варианте с делегатом не хватает только хороших xml комментариев. J>Вместо делегата можно передавать интерфейс с каким-то методом, но в этом случае придется реализовывать этот интерфейс, но зато будут описаны более строгие правила по передачи правильного объекта.