Оффтопик. Изучаем C#

Автор Тема: Оффтопик. Изучаем C#  (Прочитано 244154 раз)

0 Пользователей и 3 Гостей просматривают эту тему.

Оффлайн Lemieux

  • ADN OPEN
  • ****
  • Сообщений: 389
  • Карма: 21
Re: Оффтопик. Изучаем C#
« Ответ #225 : 06-02-2021, 21:24:59 »
Проверил в новом проекте, в Visual Studio Code на винде и линуксе, ни где не работает. Не понимаю, что не так.

Оффлайн Lemieux

  • ADN OPEN
  • ****
  • Сообщений: 389
  • Карма: 21
Re: Оффтопик. Изучаем C#
« Ответ #226 : 06-02-2021, 22:27:51 »
Это фиаско. Не заметил, что при копировании с сайта добавились пробелы.

Оффлайн trir

  • ADN Club
  • ****
  • Сообщений: 475
  • Карма: 63
Re: Оффтопик. Изучаем C#
« Ответ #227 : 08-02-2021, 07:33:49 »
я тоже на этом пару раз спотыкался, в итоге включил отображение табуляции в vs

Оффлайн Lemieux

  • ADN OPEN
  • ****
  • Сообщений: 389
  • Карма: 21
Re: Оффтопик. Изучаем C#
« Ответ #228 : 29-07-2021, 09:04:19 »
Всех приветствую.
Кто-то может объяснить на пальцах, что такое внедрение зависимостей и зачем огород с интерфейсами и их реализацией? Или такое не объяснить на пальцах?
Сколько не читаю разных людей и не смотрю разных примеров, не могу найти практического применения. Или это всё из-за того, что я пока не писал/не видел/не работал на больших проектах где DI даёт преимущество?

Оффлайн Александр Пекшев aka Modis

  • ADN Club
  • *****
  • Сообщений: 1658
  • Карма: 366
  • Отец modplus.org
    • ModPlus
Re: Оффтопик. Изучаем C#
« Ответ #229 : 29-07-2021, 09:21:34 »
Всех приветствую.
Кто-то может объяснить на пальцах, что такое внедрение зависимостей и зачем огород с интерфейсами и их реализацией? Или такое не объяснить на пальцах?
Сколько не читаю разных людей и не смотрю разных примеров, не могу найти практического применения. Или это всё из-за того, что я пока не писал/не видел/не работал на больших проектах где DI даёт преимущество?

При разработке проектов уровня плагинов - это как забивание гвоздей кувалдой. Даже если вы разберетесь с этим, то толку от этого будет ноль

Оффлайн Lemieux

  • ADN OPEN
  • ****
  • Сообщений: 389
  • Карма: 21
Re: Оффтопик. Изучаем C#
« Ответ #230 : 29-07-2021, 09:26:13 »
При разработке проектов уровня плагинов - это как забивание гвоздей кувалдой. Даже если вы разберетесь с этим, то толку от этого будет ноль
Вполне вероятно. Я просто иногда читаю по C# литературу, смотрю примеры и сталкиваюсь с новыми понятиями/инструментами/подходами и мне становится интересно изучить всё это. И вот бывает так, что я не понимаю, что к чему и зачем вообще это придумали.

Оффлайн Александр Пекшев aka Modis

  • ADN Club
  • *****
  • Сообщений: 1658
  • Карма: 366
  • Отец modplus.org
    • ModPlus
Re: Оффтопик. Изучаем C#
« Ответ #231 : 29-07-2021, 09:48:14 »
При разработке проектов уровня плагинов - это как забивание гвоздей кувалдой. Даже если вы разберетесь с этим, то толку от этого будет ноль
Вполне вероятно. Я просто иногда читаю по C# литературу, смотрю примеры и сталкиваюсь с новыми понятиями/инструментами/подходами и мне становится интересно изучить всё это. И вот бывает так, что я не понимаю, что к чему и зачем вообще это придумали.

Ну если просто на пальцах, то внедрение зависимостей работает примерно так:
При старте приложения создается DI контейнер. В контейнере регистрируются типы. Ну, например, у вас есть класс ClassA и класс ClassB - вы их регистрируете в контейнере.
Далее, при работе вам нужно, чтобы в ClassB использовался ClassA. Для этого вы просто в конструкторе ClassB добавляете аргументом ClassA и все. При работе приложения там контейнер уже сам разберется и внедрит экземпляры нужных классов.
Конечно, там чуть посложнее и есть ряд условий и ограничений

Ну а использование интерфейсов позволяет менять реализации сервисов не меняя кода, использующего интерфейсы. Можно даже в рантайме менять. Например, вы сделали интерфейс IPrinter с методом Print. Можете сделать класс PdfPrinter и класс WordPrinter. Думаю, понятно, что если вы используете в коде интерфейс, то неважно какой экземпляр класса подсунуть - оба работать будут

Оффлайн Дмитрий Загорулькин

  • ADN
  • *
  • Сообщений: 2531
  • Карма: 737
Re: Оффтопик. Изучаем C#
« Ответ #232 : 29-07-2021, 11:18:34 »
И вот бывает так, что я не понимаю, что к чему и зачем вообще это придумали.
Значит, ещё пока рано браться за такие вещи. Это примерно как браться за изучение высшей математики в начальных классах, когда только-только таблицу умножения выучили. Нужно как-то постепенно к этому приходить. Сперва понять что такое ООП и как им пользоваться. Потом понять, какие проблемы могут возникать и как решают эти проблемы. Тогда будет понятнее, зачем применяют шаблоны (паттерны) и придерживаются принципов (SOLID и т.п.). Поизучать про тестирование приложений и понять, как писать код, который будет легче тестировать. И потом уже должно прийти понимание, что DI (dependency injection) - это довольно полезная штука. Есть и минусы, конечно.
Ну и да - в целом, плагины для CAD-BIM приложений можно писать и без этого, не погружаясь глубоко в эту тему. Но если есть цель расширить сферу деятельности, вырасти именно как .NET-программист, то надо изучать. Например, в ASP.NET Core (разработка веб-приложений) без понимания DI - никак совсем.

Оффлайн Lemieux

  • ADN OPEN
  • ****
  • Сообщений: 389
  • Карма: 21
Re: Оффтопик. Изучаем C#
« Ответ #233 : 29-07-2021, 12:09:01 »
Значит, ещё пока рано браться за такие вещи. Это примерно как браться за изучение высшей математики в начальных классах, когда только-только таблицу умножения выучили. Нужно как-то постепенно к этому приходить. Сперва понять что такое ООП и как им пользоваться. Потом понять, какие проблемы могут возникать и как решают эти проблемы. Тогда будет понятнее, зачем применяют шаблоны (паттерны) и придерживаются принципов (SOLID и т.п.). Поизучать про тестирование приложений и понять, как писать код, который будет легче тестировать. И потом уже должно прийти понимание, что DI (dependency injection) - это довольно полезная штука.
Исходя из этого выходит, что я вообще ничего не понимаю  :'( ;D

Оффлайн Алексей Кулик

  • Administrator
  • *****
  • Сообщений: 1115
  • Карма: 173
Re: Оффтопик. Изучаем C#
« Ответ #234 : 29-07-2021, 12:12:28 »
Lemieux, ты не одинок :) Я тоже вообще ничего в C# не понимаю ))
Все, что сказано - личное мнение.

Правила форума существуют не просто так!

Приводя в сообщении код, не забывайте про его форматирование!

Оффлайн Дмитрий Загорулькин

  • ADN
  • *
  • Сообщений: 2531
  • Карма: 737
Re: Оффтопик. Изучаем C#
« Ответ #235 : 29-07-2021, 12:32:20 »
Исходя из этого выходит, что я вообще ничего не понимаю
Так это нормально. Просто надо учиться и практиковаться. Со временем понимание придёт. Я помню в 2012 году когда первую книгу по C# читал, например, совсем не понимал зачем в языке есть такие вещи как интерфейсы - и так же понятно, что у класса есть такие-то методы и свойства. Зачем дополнительно их выносить в описание без реализации? На крайний случай, есть базовые классы, абстрактные классы. В общем, непонятно было. Потом, когда столкнулся с проблемой при разработке, когда понадобилось сделать одинаковую обработку для совершенно разных классов и даже структур, тогда вспомнил: "о, так есть же интерфейс!". Ну и так со всем остальным.

Оффлайн trir

  • ADN Club
  • ****
  • Сообщений: 475
  • Карма: 63
Re: Оффтопик. Изучаем C#
« Ответ #236 : 29-07-2021, 13:53:53 »
Делал интерфейс для работы с данными ГАР. К форме через интерфейс цепляется вьюмодель. Делаю отображение муниципальной иерархии, сделал хитрую форму, а когда уже всё было готово - понял, что мне нужна административная иерархия. Сделал новую вьюмодель для административной иерархии и зарегистрировал её для старого интерфейса - и всё сразу заработало!

Оффлайн Lemieux

  • ADN OPEN
  • ****
  • Сообщений: 389
  • Карма: 21
Re: Оффтопик. Изучаем C#
« Ответ #237 : 29-07-2021, 14:42:36 »
Делаю отображение муниципальной иерархии, сделал хитрую форму
К форме через интерфейс цепляется вьюмодель.
понял, что мне нужна административная иерархия
Сделал новую вьюмодель
Зачем тут прослойка в виде интерфейса? По сути нас это ни от чего не избавило, судя по Вашему сообщению.

Оффлайн Дмитрий Загорулькин

  • ADN
  • *
  • Сообщений: 2531
  • Карма: 737
Re: Оффтопик. Изучаем C#
« Ответ #238 : 29-07-2021, 16:23:44 »
Зачем тут прослойка в виде интерфейса? По сути нас это ни от чего не избавило
soliD

Оффлайн trir

  • ADN Club
  • ****
  • Сообщений: 475
  • Карма: 63
Re: Оффтопик. Изучаем C#
« Ответ #239 : 30-07-2021, 07:42:39 »
у меня гуи и вьюмодель в разных проектах и было достаточно изменить регистрацию вьюмодели, проект с гуи даже не надо было перекомпилировать
в принципе можно сделать селектор и использовать обе вьюмодели