подскажите пожалуйста, а как поведет себя класс синглтон, который хранит в себе уже какие то данные, если к нему обратится с разных клиентов? Они оба будут видеть одно и тоже? Если да, то как сделать чтоб для каждого клиента был свой экземпляр класса?
>> Они оба будут видеть одно и тоже? Да. >> Если да, то как сделать чтоб для каждого клиента был свой экзамен маляр класса? Если у каждого клиента будет свой экземпляр класса, то это уже не будет синглтон. В библиотеке Autofac зарегистрированные зависимости по умолчанию не являются синглтонами. Если Вы хотите сделать дать зависимость синглтонам (всегда будет возвращать тот же самый экземпляр класса), то необходимо добавить метод .SingleInstance() к регистрации зависимости. В чистом .Net Core для регистрации синглтонов необходимо вызывать метод .AddSinglton(), а если синглтон не нужен то методы .AddTransient() или AddScoped().
Спасибо за вопрос. Вот пример использования самостоятельно созданного атрибута. Предположим у Вас есть некоторая модель, которую необходимо записывать в файл CSV. Заголовки файла CSV - это названия свойств модели. Предоположим, что наша модель это класс с 3-мя свойствами: имя, фамилия, возраст. Заказчик в спецификации указал, что загаловки должны быть на английском языке: Name, Surname, Age. Однако, оказалось, что код разрабатывался немецкой компанией и названия свойств всех моделей были на немецком языке. Приложение большое, менять названия свойств нельзя, чтобы избежать ошибок. Здесь мы можем использовать атрибуты, так как они не влияют на уже существующий код. Тогда алгоритм будет следуюший: 1. возьми класс, который небходимо записать в файл CSV. 2. прочитай атрибут названия заголовка в каждом свойстве класса. 3. запиши первую строчку с прочитанными заголовками из атрибутов в файл CSV. 4. запиши остальные данные в файл CSV. Пример класса с немецкими названиями свойств: public class User { [CsvHeader("Name")] public string Vorname { get; set; } [CsvHeader("Surname")] public string Nachname { get; set; } [CsvHeader("Age")] public int Alter { get; set; } } Пример класса атрибута: public class CsvHeaderAttribute : Attribute { public CsvHeaderAttribute(string header) { Header = header; } public string Header { get; set; } } Атрибуты читаются рефлексией. Данные в файл записываются стандартными функциями из пространства имен System.IO.
Все конечно интересно, но кому это интересно кроме собеседуещего, за годы работы ни разу эта информация не понадобилась, вспоминаешь ее только на собесах
@@bebronuh222 Автор сказал - объекты на куче, на которые нет ссылки в стеке будут удалены Это не правильный ответ Если у тебя в стеке есть ссылка на объект Person, но нет ссылки на объект Hand, в то время как Hand является частью Person, то объект Hand из кучи не удалится! Более правильная формулировка - gc удаляет все объекты, на которые нет ссылки из стека И на которые нет ссылки из других объектов кучи, на которые ещё есть ссылка из стека (вложенность может быть больше: Person (есть указатель в стеке), Hand (нет указателя в стеке, но это часть Person), Finger (нет указателя в стеке, но это часть Hand, который часть Person)
В контексте перегружения (overloading) методов, тип возвращаемого значения НЕ ВХОДИТ в сигнатуру метода. Но в контексте делегатов (о чём вы как раз говорите на 1:52), тип возвращаемого значения ВХОДИТ в сигнатуру метода. Типы возвращаемых значений у делегата и замещающего его (делегат) метода должны совпадать.
Нужно ещё упомянуть, что операторы сравнения перегружаются всегда парами == и !=, < и >, <= и >=, нельзя просто переопределить !=, тоже самое и про перегрузку true и false.
Про методы расширения хотелось бы написать, в них this используется со static. Создаётся статический класс, статический метод и this указывается в параметрах метода.
Здравствуйте, вопрос по поводу работы AutoFixture, насколько я понял при вызове метода Create он каждый раз генерирует случайное число, есть ли способ ограничить разброс этих чисел. Спасибо за видео, оказалось очень полезным.
Доброго времени суток. По ссылке ниже описано как генерируются числовые типы в AutoFixture. github.com/AutoFixture/AutoFixture/wiki/v3.0-Release-Notes#numbers-are-random Мне кажется Вам надо присмотреться к классу RandomNumericSequenceGenerator.
Подскажите пожалуйста никак не могу понять. Есть метод асинхронный в Web API который возвращает какие то данные в методе стоит задержка на 10 сек. Так вот никак не могу понять клиент сразу получит ответ но он будет пустой т.е он получит таску без данных. Или если клиент задержится на странице то данные ему придут через секунд? Спасибо
данные придут через "икс" секунд. В это время в интерфейсе пользователя будет какая то анимация символизирующая ожидание. То есть клиент ничего сразу не получит. Он получит данные, как только они будут готовы (после выполнения таска). А если таск настолько массивный, что он длится минуты или даже часы, то можно клиенту сразу вернуть статус 201 Accepted (естественно без данных). Когда таск будет выполнен об этом надо как-то проинфирмировать клиента (есть разные способы, например с помощью библиотеки SignalR). Сообщение клиенту будет содержатьинформацию о том, что такс закончился и данные можно скачать без задержек.
10:11 а почему мы ожидали, что (j == 1)? Я не понял. Под капотом i++ сначала происходит возврат исходного значения, а потом увеличение на 1. var i = 0; var j = i++; Тут j будет 0 в любом раскладе, разве нет?
10:40 мне кажется вы тут ошиблись. Equals проверяет названия свойств, их порядок, их значение. Оператор == проверяет, указывают ли 2 ссылки на один объект в куче. Если бы вы писали и демонстрировали код - эту ошибку легко было бы обнаружить.
Отличное видео! Единственное что - 13:02 тут в 101 строке опечатка, ее поиск и исправление остались за кадром и в 14:17 "магическим образом" все стало правильно. С дидактической точки зрения так делать не следует (лучше поверх видео добавить комментарий в стиле "а вот тут у меня опечатка").
Каунас - город Юнеско. О какой советской оккупации следует говорить? 1500 архитектурных шедевров мирового уровня. Город модернизма. Как Париж, Барселона. Предстоит долгая реставрационная работа.
Хороший пример min-рефакторинга и max-рефакторинга. Я несколько лет самостоятельно изучаю .Net C#. Ваш видеоурок с источником кода на Github очень помог мне понять, что такое чистый код. Использую для подготовки к собеседованию. Здорово, что профессионалы делятся своими знаниями с начинающими.
Спасибо за видео! Единственное замечание: не называйте, пожалуйста, сервисы услугами. Каждый раз в голове приходится переводить это слово) Ни разу не слышал, чтобы где-то ещё слово "сервисы" заменялось на "услуги"
блин бро ток начал видос твой смотреть надеюсь поможет. стоит задачка реально тривиальная в коробку добавить свой модуль в котором просто отрисовывать картинку, но вот как работает маршрутизация не понятно, просто по классам если смотреть полная белеберда, смотрю в примеры и хочется выйти) Еще и коробкой все усложняется, тк отдает ссылки на картинки без расширения на скачивание, то есть в элементарное вью с тегом img уже с лета не воткнуть(.