Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
делегаты
|
|||
|---|---|---|---|
|
#18+
кто для чего использует. примеры ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2013, 22:24 |
|
||
|
делегаты
|
|||
|---|---|---|---|
|
#18+
Свойства. Кто для чего использует. Примеры. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2013, 22:39 |
|
||
|
делегаты
|
|||
|---|---|---|---|
|
#18+
fgoghffкто для чего использует. примерыа причем тут Asp.Net? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2013, 23:44 |
|
||
|
делегаты
|
|||
|---|---|---|---|
|
#18+
Паганельfgoghffкто для чего использует. примерыа причем тут Asp.Net? кто для чего использует их в аспнет. примеры ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2013, 00:29 |
|
||
|
делегаты
|
|||
|---|---|---|---|
|
#18+
fgoghffкто для чего использует. примерыНууу... например для смены пароля. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2013, 00:53 |
|
||
|
делегаты
|
|||
|---|---|---|---|
|
#18+
skyANAfgoghffкто для чего использует. примерыНууу... например для смены пароля. (new Delegate()).ChangePassword(); ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2013, 03:44 |
|
||
|
делегаты
|
|||
|---|---|---|---|
|
#18+
skyANAfgoghffкто для чего использует. примерыНууу... например для смены пароля. Тьфу, для подтверждения Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2013, 08:10 |
|
||
|
делегаты
|
|||
|---|---|---|---|
|
#18+
skyANA, не понимаю, зачем в этой задаче делегат? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2013, 09:36 |
|
||
|
делегаты
|
|||
|---|---|---|---|
|
#18+
fgoghffПаганельпропущено... а причем тут Asp.Net? кто для чего использует их в аспнет. примерыя не использую, но их использовали разработчики стандартных контролов примеры спрашивайте у них ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2013, 09:43 |
|
||
|
делегаты
|
|||
|---|---|---|---|
|
#18+
МСУ, чтобы от реализации морды не зависеть. Класс, где этот код есть, использовался как в WinForms клиенте, так и в ASP.NET. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2013, 09:44 |
|
||
|
делегаты
|
|||
|---|---|---|---|
|
#18+
skyANAМСУ, чтобы от реализации морды не зависеть. Класс, где этот код есть, использовался как в WinForms клиенте, так и в ASP.NET. Чтоб от реализации морды не зависеть, нужно курить IoC. А делегаты в данном контексте - прибивание гвоздей экскаватором, я считаю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2013, 09:47 |
|
||
|
делегаты
|
|||
|---|---|---|---|
|
#18+
не понял ни вопроса, ни последовавших ответов. для чего используются делегаты прекрасно написано в документации ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2013, 09:57 |
|
||
|
делегаты
|
|||
|---|---|---|---|
|
#18+
МСУskyANAМСУ, чтобы от реализации морды не зависеть. Класс, где этот код есть, использовался как в WinForms клиенте, так и в ASP.NET. Чтоб от реализации морды не зависеть, нужно курить IoC. А делегаты в данном контексте - прибивание гвоздей экскаватором, я считаю.Возможно. Накидай пример с IoC, обсудим ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2013, 13:13 |
|
||
|
делегаты
|
|||
|---|---|---|---|
|
#18+
skyANAВозможно. Накидай пример с IoC, обсудим А что там кидать, бери DI контейнер, бери абстракцию IAuthService.RefreshLogon, бери реализацию WebAuthService: IAuthService и радуйся. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2013, 13:17 |
|
||
|
делегаты
|
|||
|---|---|---|---|
|
#18+
skyANAВозможно. Накидай пример с IoC, обсудим public IAuthService AuthService {get;set;} // для proptery-injection ... AuthService.RefreshLogon(...) чего тут обсуждать-то? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2013, 13:24 |
|
||
|
делегаты
|
|||
|---|---|---|---|
|
#18+
Гы. Дак это не просто IAuthService Это некий класс, что хранит информацию о сенасе пользователя: данные о самом пользователе, его активности. Этакий SessionContext, или ExecutionContext. И если пользователь покинул рабочее место и отсутсвует(овал) длительное время, то для продолжения работы нужно запросить подтверждение пароля. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2013, 13:43 |
|
||
|
делегаты
|
|||
|---|---|---|---|
|
#18+
skyANA, вообще-то информация об аутентификации храниться в Ticket почитайте http://support.microsoft.com/kb/910443 достаётся средствами мембершипа. расшифровывается и десерилизуется. а класс сервиса как реализован зависит от задачи. что и как делает неизвестно. в этом как раз и великий смысл IoC. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2013, 13:52 |
|
||
|
делегаты
|
|||
|---|---|---|---|
|
#18+
hVosttskyANA, вообще-то информация об аутентификации храниться в Ticket почитайте http://support.microsoft.com/kb/910443 достаётся средствами мембершипа. расшифровывается и десерилизуется. а класс сервиса как реализован зависит от задачи. что и как делает неизвестно. в этом как раз и великий смысл IoC.В WinForms использовать можно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2013, 13:53 |
|
||
|
делегаты
|
|||
|---|---|---|---|
|
#18+
skyANAВ WinForms использовать можно? в WinForms использовать систему авторизации и аутентификации ASP.NET? ну канешна! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2013, 13:55 |
|
||
|
делегаты
|
|||
|---|---|---|---|
|
#18+
hVosttskyANAВ WinForms использовать можно? в WinForms использовать систему авторизации и аутентификации ASP.NET? ну канешна! Вот я о чём. Это не аутентификация. Пользователь уже залогинился, уже прошёл аутентификацию. Класс не предназначен для аутентификации. Класс предназначен для отслеживания активности пользователя. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2013, 13:59 |
|
||
|
делегаты
|
|||
|---|---|---|---|
|
#18+
Причём классу не важно какой клиент использует пользователь для работы с системой: WinForms или ASP.NET. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2013, 14:00 |
|
||
|
делегаты
|
|||
|---|---|---|---|
|
#18+
skyANAПричём классу не важно какой клиент использует пользователь для работы с системой: WinForms или ASP.NET. возвращаемся к теме IoC. ваш делегат это по сути ручная (хардкодинг) реализация того, что предлагается DI-контейнером. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2013, 14:03 |
|
||
|
делегаты
|
|||
|---|---|---|---|
|
#18+
hVosttskyANAПричём классу не важно какой клиент использует пользователь для работы с системой: WinForms или ASP.NET. возвращаемся к теме IoC. ваш делегат это по сути ручная (хардкодинг) реализация того, что предлагается DI-контейнером.Не понимаю. Класс делегирует метод запроса подтверждения пароля вызывающему коду. То есть в WinForms клиенте реализуется метод, что открывает диалог, в ASP.NET клиенте вызывающий код тупо дёргает FormsAuthentication.SignOut. А в случае c IoC что будет? Некая реализация IAuthService будет открывать диалог? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2013, 14:09 |
|
||
|
делегаты
|
|||
|---|---|---|---|
|
#18+
skyANAА в случае c IoC что будет? Некая реализация IAuthService будет открывать диалог? в случае IoC, у вашего клиента будет интерфейс с методом подтверждения, который он будет дергать. а что там будет происходить в реализации ему по барабану вообще. пусть для WinForms будет открываться какое-то окошко или диалог. да хоть корабли в космос пусть запускает ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2013, 14:15 |
|
||
|
делегаты
|
|||
|---|---|---|---|
|
#18+
hVosttskyANAА в случае c IoC что будет? Некая реализация IAuthService будет открывать диалог? в случае IoC, у вашего клиента будет интерфейс с методом подтверждения, который он будет дергать. а что там будет происходить в реализации ему по барабану вообще. пусть для WinForms будет открываться какое-то окошко или диалог. да хоть корабли в космос пусть запускает Ну да. А сейчас что не так? Где хардкод? Есть реализация, что одинакого работает и в Win, и в Web клиенте. Нет необходимости писать две различные реализации. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2013, 14:28 |
|
||
|
делегаты
|
|||
|---|---|---|---|
|
#18+
skyANAНу да. А сейчас что не так? Где хардкод? Есть реализация, что одинакого работает и в Win, и в Web клиенте. Нет необходимости писать две различные реализации. тогда зачем делегат? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2013, 15:01 |
|
||
|
делегаты
|
|||
|---|---|---|---|
|
#18+
hVosttskyANAНу да. А сейчас что не так? Где хардкод? Есть реализация, что одинакого работает и в Win, и в Web клиенте. Нет необходимости писать две различные реализации. тогда зачем делегат?Эххх... Плохо пример написал. Некий класс следит за активностью пользователя, обсёрвит различные события, запоминает время последней активности (в памяти, в сессии, в базе, не важно). Пользователя вдруг дёргают (допустим это врач, его вызывают на операцию). Врач уходит. Через 15 минут в кабинет заходит любопытная уборщица и лезет смотреть, что же там делал врач. Класс ловит событие активности, проверяет, что превышено максимальное время бездействия и говорит: стопэ, чтобы дальше продолжить, нужно подтвердить себя. Сам он ясен пень не может чистить куки, редиректить на страницу логина, открывать диалоги. Он делегирует это. Если вызывающая сторона не предоставляет реализацию запроса подтверждения, то дальнейшая активность тупо пресекается. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2013, 15:14 |
|
||
|
делегаты
|
|||
|---|---|---|---|
|
#18+
skyANA, можно еще такой финт предложить,( что бы тех и тех успокоить) Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2013, 15:56 |
|
||
|
делегаты
|
|||
|---|---|---|---|
|
#18+
Где-то в степи, дак Action жеж делегат :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2013, 15:59 |
|
||
|
делегаты
|
|||
|---|---|---|---|
|
#18+
skyANA, ну а че, добавили указатель, или по месту, и вперед делегаты депутаты ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2013, 16:21 |
|
||
|
делегаты
|
|||
|---|---|---|---|
|
#18+
skyANAОн делегирует это Это логика, которая легко покрывается с помощью DI. Я не понимаю, нахрена тебе делегаты? :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2013, 16:30 |
|
||
|
делегаты
|
|||
|---|---|---|---|
|
#18+
МСУskyANAОн делегирует это Это логика, которая легко покрывается с помощью DI. Я не понимаю, нахрена тебе делегаты? :)Если легко, то покажи мне код. Ну или опиши словами что-ли, что и куда ты собрался инжектить. P.S.: а логика реализована 6 лет назад, и прекрасно работает. Я просто вспонил о ней, прочитав вопрос ТС. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2013, 16:37 |
|
||
|
делегаты
|
|||
|---|---|---|---|
|
#18+
skyANA, я так и не понял, ты делегат где определяешь? и почему нельзя обойтись обычным методом класса? зачем мудрить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2013, 16:41 |
|
||
|
делегаты
|
|||
|---|---|---|---|
|
#18+
hVosttskyANA, я так и не понял, ты делегат где определяешь? и почему нельзя обойтись обычным методом класса? зачем мудрить?Класс следит за активностью сессии пользователя. В какой-то момент он наблюдает ситуацию, что между текущим и предыдущим действием прошло больше положенного времени и блокирует дальнейшие действия, пока пользователь не подтвердит, что это именно он. Причём нам не интересно как пользователь будет подтверждать то, что это именно он. Будет ему показан диалог, или его пошлют на страницу логина. Это поведение делегируется! Не, ну можно кинуть исключение, что вызывающий код либо обработает, либо нет. Или событие, на которое вызывающий код либо подпишется, либо нет. Но что значит обойтись обычным методом класса? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2013, 18:28 |
|
||
|
делегаты
|
|||
|---|---|---|---|
|
#18+
skyANA, ок. но в данном случае не интересно чем занимается класс. важно кто и когда определяет делегат у инстанса твоего класса? skyANAЭто поведение делегируется! вот кем, чем и когда делегируется? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2013, 18:44 |
|
||
|
делегаты
|
|||
|---|---|---|---|
|
#18+
hVosttskyANA, ок. но в данном случае не интересно чем занимается класс. важно кто и когда определяет делегат у инстанса твоего класса? skyANAЭто поведение делегируется! вот кем, чем и когда делегируется?А вот это уже зависит от конкретного клиента и спокойно может разруливаться на уровне IoC контроллера. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2013, 18:48 |
|
||
|
делегаты
|
|||
|---|---|---|---|
|
#18+
skyANA, так об этом и речь. кстати, почему не event-событие? а делегат? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2013, 18:58 |
|
||
|
делегаты
|
|||
|---|---|---|---|
|
#18+
hVosttтак об этом и речь.Разверни мысль. hVosttкстати, почему не event-событие? а делегат?1. Обработчики событий — это нe что иное, как методы, вызываемые с помощью делегатов. Это кстати по твоей же ссылке и написано; 2. В конкретном клиенте один способ подтвердить пароль: один диалог подтверждения пароля, одна страничка, - и события тут на фиг не нужны. Плюс мы исключаем возможность того, что на событие подпишутся несколько раз и пользователя попросят подтвердить себя подряд несколько раз, да ещё вдруг разными способами. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2013, 19:28 |
|
||
|
делегаты
|
|||
|---|---|---|---|
|
#18+
skyANAРазверни мысль. да хотя бы даже так: Код: c# 1. 2. 3. а делегат — это костыль. оно вообще изначально для событий было изобретено. поведение реализуется либо с помощью ООП, либо на уровне интерфейсов. использовать делегаты для решения таких задач — грубо, не профессионально и прошлый век вообще. с делегатом в числе свойств/полей класса получается лапша-доширак в коде. все перемешалось. и мухи, и котлеты. после адекватного ревью, такой кусок кода должен был бы помечен, как "WTF, убрать ево нафих!" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2013, 19:52 |
|
||
|
делегаты
|
|||
|---|---|---|---|
|
#18+
hVosttskyANAРазверни мысль. да хотя бы даже так: Код: c# 1. 2. 3. а делегат — это костыль. оно вообще изначально для событий было изобретено. поведение реализуется либо с помощью ООП, либо на уровне интерфейсов. использовать делегаты для решения таких задач — грубо, не профессионально и прошлый век вообще. с делегатом в числе свойств/полей класса получается лапша-доширак в коде. все перемешалось. и мухи, и котлеты. после адекватного ревью, такой кусок кода должен был бы помечен, как "WTF, убрать ево нафих!" А конструктивные аргументы будут? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2013, 20:10 |
|
||
|
делегаты
|
|||
|---|---|---|---|
|
#18+
skyANA, куда уж конструктивнее, всё четко по делу :) Архитектура на делегатах просто убийственна. Посмотри фильм Бомж с дробовиком. Тот случай, зуб даю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2013, 20:14 |
|
||
|
делегаты
|
|||
|---|---|---|---|
|
#18+
МСУskyANA, куда уж конструктивнее, всё четко по делу :) Архитектура на делегатах просто убийственна. Посмотри фильм Бомж с дробовиком. Тот случай, зуб даю.Минусы какие? Какие проблемы могут возникнуть при таком подходе? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2013, 20:15 |
|
||
|
делегаты
|
|||
|---|---|---|---|
|
#18+
skyANAМСУskyANA, куда уж конструктивнее, всё четко по делу :) Архитектура на делегатах просто убийственна. Посмотри фильм Бомж с дробовиком. Тот случай, зуб даю.Минусы какие? Какие проблемы могут возникнуть при таком подходе? Никакой инверсии, прибивание реализаций гвоздями к забору. Делегатный хаос. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2013, 22:35 |
|
||
|
делегаты
|
|||
|---|---|---|---|
|
#18+
МСУskyANAпропущено... Минусы какие? Какие проблемы могут возникнуть при таком подходе? Никакой инверсии, прибивание реализаций гвоздями к забору. Делегатный хаос.Что такое "прибивание реализаций гвоздями к забору"? А про делегатный хаос можно поподробнее, а то я с таким ещё не сталкивался? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2013, 22:45 |
|
||
|
делегаты
|
|||
|---|---|---|---|
|
#18+
skyANA, проблема №1. удерживание контекста. вам надо где-то сделать Код: c# 1. если на объект someClassInstance потеряется ссылка, то будет Жопа получив же экземпляр интерфейса мы точно знаем, что объект по ссылке будет жить до последнего вздоха хранителя ссылки, если это не WeakReference конечно проблема №2. размазывание логики. может быть ты не знал, что по логике в свойствах и полях класса хранятся объекты, а не методы. не надо путать C# с JavaScript (где такой подход не только уместен, он жизненно необходим). существует небольшой ряд исключений из правил, например спецификации, где однако задача достаточно чётко обозначена и это обосновано. в основном делегаты — события и функциональщина в чистом виде. т.е. жизнь делегата должна быть коротка, очень коротка.., либо жестко кем-то управляема (event). проблема №3. гвозди. что будет, если делегату надо будет хранить еще какое-то состояние. самый банальный пример в контексте задачи: период проверки, кеш, еще что-то. кто знает? с делегатом нам придётся из самой реализации делегата что-то там дергать через что-то ещё. и это кривые ржавые торчащие гвозди. короче ад. проблема №4. избыточность. перед вызовом делегата, надо проверить его на null. или... а что делать если null? здравствуй здравствуй неочевидная логика! )) делегат надо где-то установить. значит кто-то этим должен заняться, типо кого-то озадачить лишней ответственностью — определение делегата. и это будет хардкод в чистом виде. и никак не получится от этого абстрагироваться, как в случае с интерфейсом. -------------- всё это не значит, что делегаты нельзя использовать неправильно. очевидно, это будет просто плохой код. но далеко не всех это беспокоит ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2013, 23:40 |
|
||
|
делегаты
|
|||
|---|---|---|---|
|
#18+
ошибочка... Код: c# 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2013, 23:43 |
|
||
|
делегаты
|
|||
|---|---|---|---|
|
#18+
hVosttвсё это не значит, что делегаты нельзя использовать неправильно. очевидно, это будет просто плохой код. но далеко не всех это беспокоит Меня это действительно не беспокоит. Код 2006 года и с ним нет никаких проблем. Я о нём после пятой кружки Guinness вспомнил По поводу п.3: не понял, зачем ты выдумал какой-то период проверки и прочее в контексте задачи? По какому принципу происходит проверка никак не связана с делегатом. По поводу п.4: если null, то очевидно, что мы не прошли проверку. Ровно также, если исключение не обработано, или экземпляр IUserClassifier не определён. С п.1 соглашусь, хотя сложно представить себе эту ситуацию. По поводу п.2: честно не понял, о каком размазывании логики ты говоришь. Зато вспомнил BlToolkit, у них там есть место, где они используют делегаты в качестве статических свойств класса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2013, 00:41 |
|
||
|
делегаты
|
|||
|---|---|---|---|
|
#18+
skyANAвспомнил BlToolkit, у них там есть место, где они используют делегаты в качестве статических свойств класса.И не только статических... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2013, 00:50 |
|
||
|
делегаты
|
|||
|---|---|---|---|
|
#18+
skyANA, BlToolkit - это что, хороший пример? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2013, 01:03 |
|
||
|
делегаты
|
|||
|---|---|---|---|
|
#18+
Изопропил, ну достаточно известная библиотека. Как бы так сэмулировать п.1 (если на объект someClassInstance потеряется ссылка), а? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2013, 01:06 |
|
||
|
делегаты
|
|||
|---|---|---|---|
|
#18+
skyANA, работающего говнокода в мире навалом вот этот офигенный оргумент-железяка «ну оно же работает» надо повесить в рамочку с чёрной ленточкой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2013, 01:30 |
|
||
|
делегаты
|
|||
|---|---|---|---|
|
#18+
hVosttskyANA, работающего говнокода в мире навалом вот этот офигенный оргумент-железяка «ну оно же работает» надо повесить в рамочку с чёрной ленточкой.Ты сначала докажи, что говнокод А то ведь "ваша музыка говно, потому что она говно" тоже можно повесить в рамочку. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2013, 01:33 |
|
||
|
делегаты
|
|||
|---|---|---|---|
|
#18+
skyANA, "а оно ж у меня с N-знает какого-года работает" ... типо такой офигенно веский, прям мегаубийственный аргумент. у меня тоже есть такой эдакий код 7-летней давности, там в портянках листинга разобраться не хватит и двух ящиков водки. я вот туда ни за что не полезу. но оно работает! просто магия и волшебство какое-то. я утверждаю, что в твоей задаче делегат нафиг не сдался. не вижу объективных причин. лично я свои аргументы привёл. вместо того, чтобы оспаривать их, докажи от обратного, что не говнокод . где эти убийственные аргументы в защиту? только без порядком поднадоевшего "работает же". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2013, 02:11 |
|
||
|
делегаты
|
|||
|---|---|---|---|
|
#18+
skyANAМСУНикакой инверсии, прибивание реализаций гвоздями к забору. Делегатный хаос.Что такое "прибивание реализаций гвоздями к забору"? А про делегатный хаос можно поподробнее, а то я с таким ещё не сталкивался? Много дилетантских вопросов, я в замешательстве... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2013, 09:42 |
|
||
|
делегаты
|
|||
|---|---|---|---|
|
#18+
hVosttskyANA, "а оно ж у меня с N-знает какого-года работает" ... типо такой офигенно веский, прям мегаубийственный аргумент. у меня тоже есть такой эдакий код 7-летней давности, там в портянках листинга разобраться не хватит и двух ящиков водки. я вот туда ни за что не полезу. но оно работает! просто магия и волшебство какое-то. я утверждаю, что в твоей задаче делегат нафиг не сдался. не вижу объективных причин. лично я свои аргументы привёл. вместо того, чтобы оспаривать их, докажи от обратного, что не говнокод . где эти убийственные аргументы в защиту? только без порядком поднадоевшего "работает же".Смешной ты. Ты так и не понял, что я не пытаюсь тут выдумать каких-то офигенно веских и убийственных аргументов в защиту. ТС спросил, где. Я вспомнил кусок кода. С горем пополам объяснил какую задачу он решает. Пришёл ты с МСУ и начали кидаться фразами типа: "это говно, DI всё!". Я попросил конструктивных аргументов. Попросил рассказать о минусах и проблемах, что могут возникнуть. Вот тут ты наконец выдал, конструктивный ответ, молодец. А дальше опять пошёл флуд с импользованием различных эпитетов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2013, 10:33 |
|
||
|
делегаты
|
|||
|---|---|---|---|
|
#18+
МСУskyANAпропущено... Что такое "прибивание реализаций гвоздями к забору"? А про делегатный хаос можно поподробнее, а то я с таким ещё не сталкивался? Много дилетантских вопросов, я в замешательстве...Дак давно известно, что дилетантские вопросы типа: "А, почему так? А почему сяк? А это что?", - обычно и ставят в замешательство. Вот и ты попался ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2013, 10:35 |
|
||
|
делегаты
|
|||
|---|---|---|---|
|
#18+
skyANA, слушай, ну если у тебя до сих пор непонимание отличия реализации (делегаты) от абстракции (интерфейсы), ну что я могу сделать? Как можно делать инверсию на делегатах? Это же бред чистой воды. Вот у меня и нет слов. Что тут сказать можно про этот идиотизм. Ничего личного. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2013, 10:41 |
|
||
|
делегаты
|
|||
|---|---|---|---|
|
#18+
МСУ, давай давай, развивай мысль. То есть ты хочешь сказать, что нарушается один из принципов SOLID, а именно: Принцип инверсии зависимостей? Каким образом? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2013, 10:48 |
|
||
|
делегаты
|
|||
|---|---|---|---|
|
#18+
skyANAМСУ, давай давай, развивай мысль. То есть ты хочешь сказать, что нарушается один из принципов SOLID, а именно: Принцип инверсии зависимостей? Каким образом? То есть я хочу сказать, что нарушается 2 важных принципа ООП инверсии управления: 1. Модули верхнего уровня не должны зависеть от модулей нижнего уровня. Оба должны зависеть от абстракции. 2. Абстракции не должны зависеть от деталей. Детали должны зависеть от абстракций. Так же еще рекомендую почитать про DI контейнер, что предоставляет программисту значительно большую гибкость в разработке и удобство в тестировании кода. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2013, 10:53 |
|
||
|
делегаты
|
|||
|---|---|---|---|
|
#18+
МСУ, классно ты википедию процитировал. А своими словами объяснить можешь? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2013, 10:57 |
|
||
|
делегаты
|
|||
|---|---|---|---|
|
#18+
skyANA, если совсем по простому - делегат не должен выполнять работу в интересах инициатора события, его задача удовлетворить интересы подписчика. Но каждый сам решает, стрелять себе в ногу или нет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2013, 11:01 |
|
||
|
делегаты
|
|||
|---|---|---|---|
|
#18+
Изопропил, не, по простому не надо. Надо чётко: не должен, потому что могут случиться вот такие-то грабли. Какие? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2013, 11:06 |
|
||
|
делегаты
|
|||
|---|---|---|---|
|
#18+
skyANAМСУ, классно ты википедию процитировал. А своими словами объяснить можешь? У тебя трудности восприятия? Я тебе и сам писал, и википедию цитировал, и хвост и изопропилом мозги вправлял. А тебе опять ничего не понятно. Попей пивка. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2013, 11:08 |
|
||
|
делегаты
|
|||
|---|---|---|---|
|
#18+
То есть использовать событие, вместо делегата, будет кошерно? Вызывающий код подпишется на событие, в какой-то момент времени словит его, и на уровне вызывающего кода будет принято решение, что делать дальше: опрашивать пользователя, или вообще закрыть приложение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2013, 11:10 |
|
||
|
делегаты
|
|||
|---|---|---|---|
|
#18+
МСУskyANAМСУ, классно ты википедию процитировал. А своими словами объяснить можешь? У тебя трудности восприятия? Я тебе и сам писал, и википедию цитировал, и хвост и изопропилом мозги вправлял. А тебе опять ничего не понятно. Попей пивка.Ладно, понял. Своими словами у тебя будет про прибивание гвоздями. Продолжим лучше с хвостом и изопропилом. А пивка всенепременно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2013, 11:15 |
|
||
|
делегаты
|
|||
|---|---|---|---|
|
#18+
skyANAЛадно, понял. Своими словами у тебя будет про прибивание гвоздями. + делегатный хаос, забыл что ли. skyANAПродолжим лучше с хвостом и изопропилом. Они тоже не резиновые. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2013, 11:19 |
|
||
|
делегаты
|
|||
|---|---|---|---|
|
#18+
skyANAИзопропил, не, по простому не надо. Надо чётко: не должен, потому что могут случиться вот такие-то грабли. Какие? по простому, делегат не должен не рекомендуется модифицировать объект - инициализатора события, через подписку ( sender), ибо это ведет к усложнению восприятия кода в плане сопровождения, если это происходит то нужно акцентировать этот момент в описаниях методов или хотя бы на уровне названия методов или событий ( я думаю он это имел ввиду) это носит рекрмендательный характер не более), в вашем случае ( я не вникал в суть топика) вполне может быть - и законно.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2013, 11:31 |
|
||
|
делегаты
|
|||
|---|---|---|---|
|
#18+
Изопропилесли совсем по простому - делегат не должен выполнять работу в интересах инициатора события, его задача удовлетворить интересы подписчика. красиво сказано. я аж прослезился реально, skyANA ну куда проще-то? может на другом языке? )) ถ้าง่ายมาก - ผู้แทนจะต้องไม่ปฏิบัติงานในนามของผู้ริเริ่มการจัดงานงานของมันคือการตอบสนองผลประโยชน์ของผู้ใช้บริการ काफी सरल है - प्रतिनिधि घटना के सर्जक की ओर से काम पूरा नहीं होगा, अपने काम के लिए ग्राहक के हितों को पूरा करने के लिए है. hvis ganske simpelt - delegeret må ikke udføre arbejde på vegne af initiativtager til begivenheden, dens opgave er at tilfredsstille interesser abonnenten. ну и то, что на делегатах не сделаешь инверсии уже достаточно хорошо сказано, потому что делегаты не являются абстракцией и, соответственно, не могут быть звеном независимой архитектуры.. тут либо банальная упёртость, либо не способность осознать элементарные вещи. только хардкод, только ржавые гвозди! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2013, 11:48 |
|
||
|
делегаты
|
|||
|---|---|---|---|
|
#18+
hVostt, не являются абстракцией? То есть если сигнатура метода определена в интерфейсе, то это абстракиця. А если делегатом, то нет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2013, 12:03 |
|
||
|
делегаты
|
|||
|---|---|---|---|
|
#18+
skyANAhVostt, не являются абстракцией? То есть если сигнатура метода определена в интерфейсе, то это абстракиця. А если делегатом, то нет? Помимо определения сигнатуры метода, делегату можно назначить любой метод из любого доступного класса или структуры, соответствующий сигнатуре делегата, которая состоит из типа возвращаемого значения и параметров. Это позволяет программно изменять вызовы метода, а также включать новый код в существующие классы. Это не слабосвязность, это пухлая реализация в виде гвоздей, как уже заметили. Другими словами, нужно животное, а ты пихаешь корову и сетуешь, ну корова же животное. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2013, 12:07 |
|
||
|
делегаты
|
|||
|---|---|---|---|
|
#18+
О какой инверсии может идти речь? Общие сведения о делегатахДелегаты похожи на указатели функций в C++, но являются типобезопасными. Делегаты позволяют производить передачу методов подобно обычным параметрам. Делегаты можно использовать для задания функций обратного вызова. Делегаты можно связывать друг с другом; например, несколько методов можно вызвать по одному событию. Точное соответствие сигнатуры методов и делегата не является обязательным. Дополнительные сведения см. в разделе Использование вариативности в делегатах (C# и Visual Basic). В C# версии 2.0 представлена концепция анонимных методов, которые позволяют передавать блоки кода в виде параметров вместо использования отдельно определенного метода. В C# 3.0 для краткой записи встроенных блоков кода введены лямбда-выражения. В результате компиляции как анонимных методов, так и лямбда-выражений (в определенном контексте) получаются типы делегатов. В настоящее время эти функции объединяются под одним названием — анонимные функции. Дополнительные сведения о лямбда-выражениях см. в разделе Анонимные функции (Руководство по программированию на C#). Для инверсии подойдут только интерфейсы: Общие интерфейсыИнтерфейс как абстрактный базовый класс. Любой класс или структура, реализующие интерфейс должны реализовать все его члены. Невозможно создать экземпляр интерфейса напрямую. Его члены реализованы всеми классом или структурой, реализующей интерфейс. Интерфейсы могут содержать события, индексаторы, методы и свойства в качестве членов. Интерфейсы не содержат реализации методов. Класс или структура может реализовывать несколько интерфейсов. Класс может наследовать базовый класс и реализовать один или несколько интерфейсов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2013, 12:11 |
|
||
|
делегаты
|
|||
|---|---|---|---|
|
#18+
МСУskyANAhVostt, не являются абстракцией? То есть если сигнатура метода определена в интерфейсе, то это абстракиця. А если делегатом, то нет? Помимо определения сигнатуры метода, делегату можно назначить любой метод из любого доступного класса или структуры, соответствующий сигнатуре делегата, которая состоит из типа возвращаемого значения и параметров. Это позволяет программно изменять вызовы метода, а также включать новый код в существующие классы.Вот MSDN: сигнатуры, классы, структуры. МСУЭто не слабосвязность, это пухлая реализация в виде гвоздей, как уже заметили. Другими словами, нужно животное, а ты пихаешь корову и сетуешь, ну корова же животное.А вот МСУ: гвозди, коровы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2013, 12:13 |
|
||
|
делегаты
|
|||
|---|---|---|---|
|
#18+
skyANAВот MSDN: сигнатуры, классы, структуры. А вот МСУ: гвозди, коровы. Не туда смотришь, читай дальше: ...Это позволяет программно изменять вызовы метода, а также включать новый код в существующие классы. Вот он корень зла. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2013, 12:15 |
|
||
|
делегаты
|
|||
|---|---|---|---|
|
#18+
skyANAhVostt, не являются абстракцией? То есть если сигнатура метода определена в интерфейсе, то это абстракиця. А если делегатом, то нет? даю хинт. класс должен реализовывать конкретный требуемый интерфейс . в случае с делегатом никаких гарантий нет. свойству делегата типа void() можно подсунуть что угодно, лишь бы сигнатура совпадала. мало того, что это не безопасно, это вообще никак не разруливается. например, смотрим: требуется некий делегат void(). и что ему туда подать? че ему сунуть? че он хочет вообще? только хардкод! а в случае с интерфейсом это исключено в принципе. плюс резолверу хватает информации, чтобы выдать нужную реализацию. ну и про внезапно подчищенную из мусора ссылку я уже говорил. неопределённое поведение — самый адовый случай, за допущение которого положено отсекать причинные конечности остренькой линейкой ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2013, 12:16 |
|
||
|
делегаты
|
|||
|---|---|---|---|
|
#18+
hVostt, а например смотрим предложенный тобой код: Код: c# 1. 2. 3. В этом случае тебе понятно что ему туда подать? че ему сунуть? че он хочет вообще? Каким образом твой интерфейс исключает то, что я его не реализую так, что лишь бы сигнатура совпадала? Про внезапно подчищенную из мусора ссылку ты говорил. А слабо привести код, эмулирующий это? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2013, 12:22 |
|
||
|
делегаты
|
|||
|---|---|---|---|
|
#18+
МСУskyANAВот MSDN: сигнатуры, классы, структуры. А вот МСУ: гвозди, коровы. Не туда смотришь, читай дальше: ...Это позволяет программно изменять вызовы метода, а также включать новый код в существующие классы. Вот он корень зла.Ну давай, давай уже. Скажи в чём зло-то? Какие проблемы могут возникнуть? Сложный что-ли вопрос? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2013, 12:24 |
|
||
|
делегаты
|
|||
|---|---|---|---|
|
#18+
skyANAВ этом случае тебе понятно что ему туда подать? че ему сунуть? че он хочет вообще? Каким образом твой интерфейс исключает то, что я его не реализую так, что лишь бы сигнатура совпадала? да реализуй ты его как хочешь. важно, что класс, не реализующий этот интерфейс ты туда ну никак не сунешь. плюс резолвер легко разрулит зависимость. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2013, 12:25 |
|
||
|
делегаты
|
|||
|---|---|---|---|
|
#18+
skyANAНу давай, давай уже. Скажи в чём зло-то? Какие проблемы могут возникнуть? Сложный что-ли вопрос? Какие проблемы могут возникнуть в прикладном коде с неопределенным поведением? Ну я понимаю, если бы этот вопрос мне задал сопливый второкурсник с дрожащими руками, держащие зачетку... Я тебе уже не один раз писал - делегатный хаос . Хаос - это не проблема? Какая может быть слабосвязность слоёв в хаосе, которые ты сеешь на каждом шагу? Задумайся об этом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2013, 12:34 |
|
||
|
делегаты
|
|||
|---|---|---|---|
|
#18+
hVostt, хорошо. На этом и закончим. Код, эмулирующий подчищенную из мусора ссылку, можешь накидать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2013, 12:35 |
|
||
|
делегаты
|
|||
|---|---|---|---|
|
#18+
skyANA, Delegate / MulticastDelegate / ... - это всё так или иначе - реализации (классы). Коим не место в слабосвязной архитектуре. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2013, 12:37 |
|
||
|
делегаты
|
|||
|---|---|---|---|
|
#18+
МСУskyANAНу давай, давай уже. Скажи в чём зло-то? Какие проблемы могут возникнуть? Сложный что-ли вопрос? Какие проблемы могут возникнуть в прикладном коде с неопределенным поведением? Ну я понимаю, если бы этот вопрос мне задал сопливый второкурсник с дрожащими руками, держащие зачетку... Я тебе уже не один раз писал - делегатный хаос . Хаос - это не проблема? Какая может быть слабосвязность слоёв в хаосе, которые ты сеешь на каждом шагу? Задумайся об этом.Вот любишь ты на личности переходить и флуд разводить вместо того, чтобы по существу на вопрос ответить. Это форум, тебе сложно написать внятный ответ, чтобы и сопливый второкурсник с дрожащими руками, держащие зачетку его понял? Видимо да. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2013, 12:43 |
|
||
|
делегаты
|
|||
|---|---|---|---|
|
#18+
МСУskyANA, Delegate / MulticastDelegate / ... - это всё так или иначе - реализации (классы). Коим не место в слабосвязной архитектуре.Дак и в случае с интерфейсом мы так или иначе ссылаемся на конкретную реализацию. Или о чём ты? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2013, 12:51 |
|
||
|
делегаты
|
|||
|---|---|---|---|
|
#18+
МСУ, ты же сам цитировал MSDN: "делегату можно назначить любой метод из любого доступного класса или структуры, соответствующий сигнатуре делегата". Как это коррелирует с твоим же: "реализация, прибитая гвоздями"? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2013, 12:53 |
|
||
|
делегаты
|
|||
|---|---|---|---|
|
#18+
skyANAВот любишь ты на личности переходить и флуд разводить вместо того, чтобы по существу на вопрос ответить. Когда я (и не только я) тебе раз 10 по существу уже ответил, что ж остается, как ни флудить и бросаться какашками. Это жизнь, коллега. По-другому никак :) skyANAЭто форум, тебе сложно написать внятный ответ, чтобы и сопливый второкурсник с дрожащими руками, держащие зачетку его понял? Видимо да. Ну написал же, википедию цитировал и разжевывал, буквари цитировал и разжевывал, на коровах примеры приводил, ... Остаётся только извлечь твой моск, инжектировать (IoC) в него понимание сути делегатов в слабосвязных системах, вкорячить обратно. Другого пути я пока не знаю. Может, кто подскажет варианты... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2013, 12:55 |
|
||
|
делегаты
|
|||
|---|---|---|---|
|
#18+
skyANAМСУskyANA, Delegate / MulticastDelegate / ... - это всё так или иначе - реализации (классы). Коим не место в слабосвязной архитектуре.Дак и в случае с интерфейсом мы так или иначе ссылаемся на конкретную реализацию. Или о чём ты? Сдурел что-ли? В случае с интерфейсом мы ссылаемся только на абстракцию ! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2013, 12:56 |
|
||
|
делегаты
|
|||
|---|---|---|---|
|
#18+
МСУ, не льсти себе, лично ты по существу ничего не сказал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2013, 12:57 |
|
||
|
делегаты
|
|||
|---|---|---|---|
|
#18+
МСУskyANAпропущено... Дак и в случае с интерфейсом мы так или иначе ссылаемся на конкретную реализацию. Или о чём ты? Сдурел что-ли? В случае с интерфейсом мы ссылаемся только на абстракцию !Так. Походу мы о разных вещах. Пример кода приведи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2013, 12:59 |
|
||
|
делегаты
|
|||
|---|---|---|---|
|
#18+
skyANAМСУ, ты же сам цитировал MSDN: "делегату можно назначить любой метод из любого доступного класса или структуры, соответствующий сигнатуре делегата". Как это коррелирует с твоим же: "реализация, прибитая гвоздями"? Самым прямым способом это коррелирует. Я же приводил пример с коровой. Мой код работает с животными, твой код работает с коровой. Если потребуется мне работать со свиньей, я без проблем инжектирую свинюшку через контейнер и у меня всё будет работать (уши, голова, хвост). Если тебе потребуется работать со свинюшкой, о твоей "новинке" узнают все подписчики объекта (asp.net, winforms, прикладной код, все на планете). Разницу улавливаешь? P.S. Может таки тебе почитать про IoC и DI? На лицо полное непонимание сути... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2013, 13:00 |
|
||
|
делегаты
|
|||
|---|---|---|---|
|
#18+
skyANAМСУ, не льсти себе, лично ты по существу ничего не сказал. Действительно. О том же думает и корова, которой я прочитал Есенина... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2013, 13:01 |
|
||
|
делегаты
|
|||
|---|---|---|---|
|
#18+
skyANAМСУпропущено... Сдурел что-ли? В случае с интерфейсом мы ссылаемся только на абстракцию !Так. Походу мы о разных вещах. Пример кода приведи. Пецдец, товарещ. Приплыли Пример с картинками и кодом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2013, 13:02 |
|
||
|
делегаты
|
|||
|---|---|---|---|
|
#18+
МСУskyANAМСУ, ты же сам цитировал MSDN: "делегату можно назначить любой метод из любого доступного класса или структуры, соответствующий сигнатуре делегата". Как это коррелирует с твоим же: "реализация, прибитая гвоздями"? Самым прямым способом это коррелирует. Я же приводил пример с коровой. Мой код работает с животными, твой код работает с коровой. Если потребуется мне работать со свиньей, я без проблем инжектирую свинюшку через контейнер и у меня всё будет работать (уши, голова, хвост). Если тебе потребуется работать со свинюшкой, о твоей "новинке" узнают все подписчики объекта (asp.net, winforms, прикладной код, все на планете). Разницу улавливаешь? P.S. Может таки тебе почитать про IoC и DI? На лицо полное непонимание сути...Согласен. Я тебя вообще не понимаю. Я приводил пример кода. Что ты там называешь коровой? Приведи свой пример. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2013, 13:03 |
|
||
|
делегаты
|
|||
|---|---|---|---|
|
#18+
skyANAСогласен. Я тебя вообще не понимаю. Я приводил пример кода. Что ты там называешь коровой? Приведи свой пример. Ну вот, разрулили. Давай тогда без примеров и прочих запудриваний. Просто берешь, открываешь букварь, читаешь и вникаешь. Пробуешь на практике с ASP.NET MVC, там всё есть для работы с инверсией виде DI контейнера (честный простенький резолвер IDependencyResolver или жирная мощная фабрика IControllerFactory). Начни с первого. Когда будешь понимать, о чем тебе тут досаждают, возвращайся, продолжим спич. А пока не вижу смысла продолжать беседу. По рукам? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2013, 13:08 |
|
||
|
делегаты
|
|||
|---|---|---|---|
|
#18+
skyANAКод, эмулирующий подчищенную из мусора ссылку, можешь накидать? таки нет. здесь я не прав. по крайне мере что касается контекста потока исполнения. делегат таки хранит ссылку. освежевал немного Рихтера. пережитки С++ дают о себе знать этот пункт можно вычёркивать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2013, 13:08 |
|
||
|
делегаты
|
|||
|---|---|---|---|
|
#18+
Ладно, сам перепишу свой код, спользуя магию DI: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. В момент вызова Confirm() наш инжектированный confirmer ссылается на конкретную реализацию. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2013, 13:10 |
|
||
|
делегаты
|
|||
|---|---|---|---|
|
#18+
МСУskyANAСогласен. Я тебя вообще не понимаю. Я приводил пример кода. Что ты там называешь коровой? Приведи свой пример. Ну вот, разрулили. Давай тогда без примеров и прочих запудриваний. Просто берешь, открываешь букварь, читаешь и вникаешь. Пробуешь на практике с ASP.NET MVC, там всё есть для работы с инверсией виде DI контейнера (честный простенький резолвер IDependencyResolver или жирная мощная фабрика IControllerFactory). Начни с первого. Когда будешь понимать, о чем тебе тут досаждают, возвращайся, продолжим спич. А пока не вижу смысла продолжать беседу. По рукам?Повторю: не льсти себе. DI я использую с завидной регулярностью. Но это мне никак не помогает понять тебя. Ты опять съехал на личности, вместо ответа по существу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2013, 13:12 |
|
||
|
делегаты
|
|||
|---|---|---|---|
|
#18+
skyANAВ момент вызова Confirm() наш инжектированный confirmer ссылается на конкретную реализацию. В текущий момент времени да, а через 5 минут уже может быть инжектирована другая реализация. Тем самым, твой контроллер не знает, с кем будет общаться. Он знает только о контракте. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2013, 13:13 |
|
||
|
делегаты
|
|||
|---|---|---|---|
|
#18+
hVosttskyANAКод, эмулирующий подчищенную из мусора ссылку, можешь накидать? таки нет. здесь я не прав. по крайне мере что касается контекста потока исполнения. делегат таки хранит ссылку. освежевал немного Рихтера. пережитки С++ дают о себе знать этот пункт можно вычёркивать. чёрт, а я уж было хотел сам вечерком Рихтера перечитать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2013, 13:15 |
|
||
|
делегаты
|
|||
|---|---|---|---|
|
#18+
МСУskyANAВ момент вызова Confirm() наш инжектированный confirmer ссылается на конкретную реализацию. В текущий момент времени да, а через 5 минут уже может быть инжектирована другая реализация. Тем самым, твой контроллер не знает, с кем будет общаться. Он знает только о контракте.Так тоже самое может произойти и в случае с делегатом: через 5 минут он уже будет ссылаться на другой метод. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2013, 13:16 |
|
||
|
делегаты
|
|||
|---|---|---|---|
|
#18+
skyANAТак тоже самое может произойти и в случае с делегатом: через 5 минут он уже будет ссылаться на другой метод. Тоже самое может быть и с классом. Но только какая это слабосвязность? Жжёшь ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2013, 13:19 |
|
||
|
делегаты
|
|||
|---|---|---|---|
|
#18+
skyANA, можно вопрос? что тебе в утверждении: делегат не должен выполнять работу в интересах инициатора события не понятно? потому что в твоём коде он именно это и делает. ты дергаешь делегат и используешь возвращённое им значение в логике. одно дело, использовать делегат для уведомления подписчиков (для чего нужно использовать event-ы, не рассусоливать на тему количества подписчиков, это не должно волновать), другое совсем — поведение. для которого существуют совершенно другие инструменты, это как раз те о которых уже который раз талдычит тебе МСУ. микроскоп и гвозди... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2013, 13:20 |
|
||
|
делегаты
|
|||
|---|---|---|---|
|
#18+
Короче мы вообще выпали из контекста задачи. Пользователь ушёл на 15 минут, вернулся, ввёл пароль, продолжил работу. Снова отошёл, вернулся, а тут ему заинжектировали другой GUI для ввода подтверждения: консолька открылась. Бред. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2013, 13:21 |
|
||
|
делегаты
|
|||
|---|---|---|---|
|
#18+
Инжектирование с помощью делегатов. Браво! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2013, 13:23 |
|
||
|
делегаты
|
|||
|---|---|---|---|
|
#18+
hVosttskyANA, можно вопрос? что тебе в утверждении: делегат не должен выполнять работу в интересах инициатора события не понятно? потому что в твоём коде он именно это и делает. ты дергаешь делегат и используешь возвращённое им значение в логике. одно дело, использовать делегат для уведомления подписчиков (для чего нужно использовать event-ы, не рассусоливать на тему количества подписчиков, это не должно волновать), другое совсем — поведение. для которого существуют совершенно другие инструменты, это как раз те о которых уже который раз талдычит тебе МСУ. микроскоп и гвозди...Внимательнее будь: 15095871 и 15095904 . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2013, 13:24 |
|
||
|
делегаты
|
|||
|---|---|---|---|
|
#18+
МСУИнжектирование с помощью делегатов. Браво! Стопэ. Где я такое предлагал? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2013, 13:26 |
|
||
|
делегаты
|
|||
|---|---|---|---|
|
#18+
skyANA, "что могут случиться" вообще в мемориз :) Ничего не случится, даже если писать лапшекод прямо в методах контроллера без репозиториев, инверсий и прочей гадости. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2013, 13:27 |
|
||
|
делегаты
|
|||
|---|---|---|---|
|
#18+
skyANAВнимательнее будь: 15095871 и 15095904 . я умываю руки. тебе про Фому, а ты про Ерёму. диалог такой же бесталковый, как рассуждать на тему, а почему бы не перегружать оператор +, чтобы он работал, как -. то, что технически так можно, совершенно не означает, что так делать надо. и проблем-то вроде бы никаких нет... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2013, 13:32 |
|
||
|
делегаты
|
|||
|---|---|---|---|
|
#18+
hVosttskyANAВнимательнее будь: 15095871 и 15095904 . я умываю руки. тебе про Фому, а ты про Ерёму. диалог такой же бесталковый, как рассуждать на тему, а почему бы не перегружать оператор +, чтобы он работал, как -. то, что технически так можно, совершенно не означает, что так делать надо. и проблем-то вроде бы никаких нет...А что не так? Один из способов - использовать событие, а не делегат. Разве ты не об этом? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2013, 13:35 |
|
||
|
делегаты
|
|||
|---|---|---|---|
|
#18+
Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. hVosttskyANA, УРА Короче, hVostt, ты за это решение, или нет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2013, 13:47 |
|
||
|
делегаты
|
|||
|---|---|---|---|
|
#18+
hVosttskyANAКод, эмулирующий подчищенную из мусора ссылку, можешь накидать? таки нет. здесь я не прав. по крайне мере что касается контекста потока исполнения. делегат таки хранит ссылку. освежевал немного Рихтера. пережитки С++ дают о себе знать этот пункт можно вычёркивать. авторперед вызовом делегата, надо проверить его на null. или... а что делать если null? здравствуй здравствуй неочевидная логика! )) бескомпромиссность этого утверждения тоже вызывает вопросы, или дописать вместо троеточия что имел автор в виду, или выкинуть эту строчку. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2013, 13:51 |
|
||
|
делегаты
|
|||
|---|---|---|---|
|
#18+
skyANAОдин из способов - использовать событие, а не делегат. Разве ты не об этом? событие и поведение вещи разные. ну да ладно, подзабей ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2013, 13:58 |
|
||
|
делегаты
|
|||
|---|---|---|---|
|
#18+
skyANAКороче, hVostt, ты за это решение, или нет? оф корс :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2013, 13:59 |
|
||
|
делегаты
|
|||
|---|---|---|---|
|
#18+
Где-то в степибескомпромиссность этого утверждения тоже вызывает вопросы, или дописать вместо троеточия что имел автор в виду, или выкинуть эту строчку. имелось в виду, что вызывающий код зависит от делегата , от его наличия. вменяемый программер глядя на сигнатуру класса решит, что это странно оформленное событие . но не тутта было! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2013, 14:02 |
|
||
|
делегаты
|
|||
|---|---|---|---|
|
#18+
hVostt, чет я не понял, событие - это событие, а делегат это - делегат совершенно разные вещи лично я уже давно и события и делегаты не проверяю на нуль....... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2013, 14:06 |
|
||
|
делегаты
|
|||
|---|---|---|---|
|
#18+
Делегат - это класс (реализация). Зачем прибивать логику к делегатам, если планируется только вызывать методы (не евенты)? Что за бред? Скиана, просто твой архитектор (или кто там придумал это в 2006 году) - упоротый. А так всё хорошо, да. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2013, 14:08 |
|
||
|
делегаты
|
|||
|---|---|---|---|
|
#18+
Где-то в степиhVostt, чет я не понял, событие - это событие, а делегат это - делегат совершенно разные вещи лично я уже давно и события и делегаты не проверяю на нуль....... Он имеет ввиду то, что объявление типизированного делегата в основном используется для программирования именно событий, а не методов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2013, 14:10 |
|
||
|
делегаты
|
|||
|---|---|---|---|
|
#18+
Где-то в степиМСУ, ну пускай будет так Еще раз, речь не о том, что делегат=событие, речь о том, что "метод" скианы - очередная черезжопщина. Уж лучше просто с обычными "хардкодными" классами работать, без инверсии. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2013, 14:16 |
|
||
|
делегаты
|
|||
|---|---|---|---|
|
#18+
МСУГде-то в степиМСУ, ну пускай будет так Еще раз, речь не о том, что делегат=событие, речь о том, что "метод" скианы - очередная черезжопщина. Уж лучше просто с обычными "хардкодными" классами работать, без инверсии. вопрос в другом прочёл бегло топик до конца, о чем толковище, да все крутится вокруг паттерна делегирования, вполне уместны и делегаты ( указатели на метод) так и Iнтерфейсы, с пеной у рта доказывать что это нельзя? а в плане примера для та, вполне уместный пример, и в общем то доходчивый, если он представляет что такое указатели - а нет так и суда нет, лет через пять въедет.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2013, 14:21 |
|
||
|
делегаты
|
|||
|---|---|---|---|
|
#18+
МСУчерезжопщина этому термину нужен отдельный смайлек ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2013, 14:22 |
|
||
|
делегаты
|
|||
|---|---|---|---|
|
#18+
Где-то в степис пеной у рта доказывать что это нельзя? skyANA хотел заценить конкретные проблемы этого решения. только какой смысл в этой мешанине кода? тут интерфейсы, там делегаты. может сразу все делать на делегатах изначально, и не парится вообще? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2013, 14:25 |
|
||
|
делегаты
|
|||
|---|---|---|---|
|
#18+
Где-то в степивполне уместны и делегаты ( указатели на метод) так и Iнтерфейсы Ну с таким же успехом я могу сказать, что и обычные классы уместны. Только слабосвязность уже идет лесом. hVosttМСУчерезжопщина этому термину нужен отдельный смайлек Есть такой. Через делегаты возможна успешная слабосвязная стыковка. Только это всё-равно черезжопщина ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2013, 14:27 |
|
||
|
делегаты
|
|||
|---|---|---|---|
|
#18+
hVostt, сама суть повествования форума, должна идти в ключе вопроса автора, ну на худой конец )) иметь информационную ценность для читающих, ибо это не чай для одного, а тут ценность была до примера скуанны, а потом поехало patati patata. я как бы не претендую на отвлечение задач по службе, но личное время убить на чтение этого - жалко. как говориться лучше - один выстрел - один труп.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2013, 14:30 |
|
||
|
делегаты
|
|||
|---|---|---|---|
|
#18+
hVosttskyANAКороче, hVostt, ты за это решение, или нет? оф корс :)А разве это не будет "выполнять работу в интересах инициатора события"? То есть нам надо реализовать некий интерфейс в интересах инициатора событий. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2013, 14:33 |
|
||
|
делегаты
|
|||
|---|---|---|---|
|
#18+
Где-то в степи, чтобы истину радить. надо много нафлудить ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2013, 14:34 |
|
||
|
делегаты
|
|||
|---|---|---|---|
|
#18+
hVostt, так я и не ругаюсь, ибо вы тут с мусей и со скайном, а кто еще может растянуть тему на пять листов? :)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2013, 14:36 |
|
||
|
делегаты
|
|||
|---|---|---|---|
|
#18+
Где-то в степи, но с другой стороны, это даже плюс, еще бы был плюс с примерами кодов - тут ничего личного - век живи век учись ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2013, 14:38 |
|
||
|
делегаты
|
|||
|---|---|---|---|
|
#18+
Где-то в степи, я их честно просил конструктивные аргументы писать, но вишь как получается:hVosttчтобы истину радить. надо много нафлудить ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2013, 14:38 |
|
||
|
делегаты
|
|||
|---|---|---|---|
|
#18+
skyANA, не жалуйся, ты то же пофлудить любишь )) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2013, 14:41 |
|
||
|
делегаты
|
|||
|---|---|---|---|
|
#18+
а вот такой вопрос, ктонить применял WebRTC в проектах? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2013, 14:42 |
|
||
|
делегаты
|
|||
|---|---|---|---|
|
#18+
skyANAА разве это не будет "выполнять работу в интересах инициатора события"? То есть нам надо реализовать некий интерфейс в интересах инициатора событий. совсем другой случай. есть чёткий контракт, в реализации которого нуждается класс. и есть реализация этого контракта, которая разруливается через DI. такой класс не стыдно и в юнит-тесты полажить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2013, 14:47 |
|
||
|
делегаты
|
|||
|---|---|---|---|
|
#18+
Где-то в степикак говориться лучше - один выстрел - один труп.. Тогда форум превратится в сухостой и будет скучным, много мемберов просто задвинут форум. А так - всегда свежая кровь и толстые дискусии. Это же хорошо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2013, 14:49 |
|
||
|
делегаты
|
|||
|---|---|---|---|
|
#18+
Где-то в степиа вот такой вопрос, ктонить применял WebRTC в проектах? предлагаешь через xsocket его применить? или что-то еще есть? незнай. флеш пока еще не изжил себя... и даже саботаж со стороны эпл не особо помог. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2013, 14:51 |
|
||
|
делегаты
|
|||
|---|---|---|---|
|
#18+
hVosttskyANAА разве это не будет "выполнять работу в интересах инициатора события"? То есть нам надо реализовать некий интерфейс в интересах инициатора событий. совсем другой случай. есть чёткий контракт, в реализации которого нуждается класс. и есть реализация этого контракта, которая разруливается через DI. такой класс не стыдно и в юнит-тесты полажить.ИМХО это теже яйца, только в профиль. Есть чёткий контракт, который надо реализовать в интересах инициатора события. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2013, 14:58 |
|
||
|
делегаты
|
|||
|---|---|---|---|
|
#18+
hVostt, как бы я давно веду эту тему, пол года назад делал общеобразовательный класс для виртуальной школы. но вот месяц он как уже лег, ничего не придумал лучше, чем плодить свой код - оформил через xsocket ( в надежде что будут поддерживать клиентскую сторону) хотя реализаций дофига уже. вроде ничего пока в тестах ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2013, 14:59 |
|
||
|
делегаты
|
|||
|---|---|---|---|
|
#18+
skyANAИМХО это теже яйца, только в профиль. Есть чёткий контракт, который надо реализовать в интересах инициатора события. ну да, с определённой точки зрения, памятник Пушкину — это большая каменная жопа ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2013, 15:02 |
|
||
|
делегаты
|
|||
|---|---|---|---|
|
#18+
Где-то в степикак бы я давно веду эту тему, пол года назад делал общеобразовательный класс для виртуальной школы. но вот месяц он как уже лег, ничего не придумал лучше, чем плодить свой код - оформил через xsocket ( в надежде что будут поддерживать клиентскую сторону) хотя реализаций дофига уже. вроде ничего пока в тестах может и МС подтянется. надо тож затестить. я пока дальше examples не копал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2013, 15:04 |
|
||
|
делегаты
|
|||
|---|---|---|---|
|
#18+
hVosttskyANAИМХО это теже яйца, только в профиль. Есть чёткий контракт, который надо реализовать в интересах инициатора события. ну да, с определённой точки зрения, памятник Пушкину — это большая каменная жопаНу да, по мнению Изопропила оба варианта - это каменная жопа. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2013, 15:07 |
|
||
|
делегаты
|
|||
|---|---|---|---|
|
#18+
hVostt, ой беда с этим ослом, в натуре упрямы, один не оптимизированный скелет http://metadll-com.1gb.ru модератор, пож, удали ссылку через почаса , пож.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2013, 15:08 |
|
||
|
делегаты
|
|||
|---|---|---|---|
|
#18+
skyANAИМХО это теже яйца, только в профиль. Есть чёткий контракт, который надо реализовать в интересах инициатора события. "Контракт" есть и у обычного класса, только помимо контракта у него есть (может быть) реализация. У интерфейса реализация невозможна в силу своей природы. Это не слабосвязность, а толстосвязность. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2013, 15:21 |
|
||
|
делегаты
|
|||
|---|---|---|---|
|
#18+
Где-то в степиhVostt, ой беда с этим ослом, в натуре упрямы, один не оптимизированный скелет http://metadll-com.1gb.ru модератор, пож, удали ссылку через почаса , пож.. мне кажется рано его напрямую в .net использовать без вменяемой поддержки. проще написать морду на asp.net, а бекенд для webrtc использовать достигший зрелости https://npmjs.org/package/webrtc.io ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2013, 15:47 |
|
||
|
делегаты
|
|||
|---|---|---|---|
|
#18+
hVostt, так и надеюсь, что поддержка будет, там по существу браузерные обновления шумят, а клиент примитивный, можно и нативно оформить, разницы нет net не нет, морда скрипиы отрабатывает, а сервер где целоваться точки будут можно и гугловский прикрепить ( шарпа ни одной строчки кода) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2013, 15:57 |
|
||
|
делегаты
|
|||
|---|---|---|---|
|
#18+
там у xsocket, серверный код, это сервер прослушки для рукопожатий браузеров, нативно можно гугловский оформить, тем более он через сокеты дышит, по этому при слабой загрузке на виртуале сервер приходиться взбадривать. еще один момент проброс по порту прослушки изначально не шел на сервере ((.. но опять плюс могу там фильтровать что бы чужие не залезли в чат.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2013, 16:04 |
|
||
|
делегаты
|
|||
|---|---|---|---|
|
#18+
если кто будет пробовать - xsocket сервер по дефолту настроен на внутреннею петлю, и 4502 порт. там если хостить в реале нужен контроль за созданием сервера - это надо залезти в доки, или спросить тут, к стати это пересекается с темой флуда , - делегирование полномочий при создании сервера прослушки - на интерфейсах.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2013, 16:10 |
|
||
|
|

start [/forum/topic.php?all=1&fid=18&tid=1357970]: |
0ms |
get settings: |
9ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
46ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
136ms |
get tp. blocked users: |
1ms |
| others: | 220ms |
| total: | 447ms |

| 0 / 0 |
