Тёмный

#29 Что такое рефлексия в языке C#? Ответ на вопрос собеседования C# /.Net 

Andrey Shyrokoriadov
Подписаться 4,3 тыс.
Просмотров 4,2 тыс.
50% 1

#reflection #рефлексия #globalassemblycache #gac #loadfile #loadfrom #csharp #dotnet #assembly #type #propertyinfo #constructorinfo #methodinfo #fieldinfo #andriyshyrokoriadov
В видео описано что такое рефлексия и как её использовать. Помимо использования рефлексии, представлены практические примеры использования классов:
- Assembly
- Type
- PropertyInfo
- ConstructorInfo
- MethodInfo
- FieldInfo
Указана разница между методами LoadFrom и LoadFile класса Assembly.
Дана информация о том что такое глобальный кэш сборо или Global Assembly Cache.
Обзор представлен в форме ответа на вопрос, который встречается на собеседованиях на позицию "программист C# / .Net".
Подписывайтесь на канал [программирование, путешествия]: / @andreyshyrokoriadov
0:05 - введение, чтение атрибутов
0:45 - сравнение рефлексии со стандартным способом создания объектов
2:45 - алгоритм работы рефлексии
5:00 - загрузка файлов DLL
6:10 - метод Load(string)
6:43 - длинное имя библиотеки
7:30 - разница между методами LoadFrom и LoadFile
8:27 - Глобальный Кэш Сборок / Global Assembly Cache
10:00 - класс Assembly
11:05 - классы PropertyInfo, ConstructorInfo, MethodInfo, FieldInfo
12:25 - практический пример
20:20 - использование класса Type
22:35 - использование класса MethodInfo
27:10 - использование класса PropertyInfo
28:42 - использование класса FieldInfo
30:22 - использование класса ConstructorInfo
31:40 - использование атрибутов
38:30 - инициализация объекта при помощи рефлексии и использование данное объекта
Текст к фильму доступен по ссылке: ashyrokoriadov.github.io/c_sh...
Ссылка на репозиториум с примерами: github.com/ashyrokoriadov/ref...
Дополнительная информация:
- рефлексия - docs.microsoft.com/en-us/dotn...
- класс Assembly - docs.microsoft.com/en-us/dotn...
- класс Type - docs.microsoft.com/en-us/dotn...
- методы Load - docs.microsoft.com/en-us/dotn...
- Global Assembly Cache - docs.microsoft.com/en-us/dotn...
- класс PropertyInfo - docs.microsoft.com/en-us/dotn...
- класс ConstructorInfo - docs.microsoft.com/en-us/dotn...
- класс MethodInfo - docs.microsoft.com/en-us/dotn...
- класс FieldInfo - docs.microsoft.com/en-us/dotn...

Опубликовано:

 

27 май 2021

Поделиться:

Ссылка:

Скачать:

Готовим ссылку...

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 23   
@AndreyShyrokoriadov
@AndreyShyrokoriadov 3 года назад
Дополнительная информация на тему атрибутов - в соответствующем фильме: ru-vid.com/video/%D0%B2%D0%B8%D0%B4%D0%B5%D0%BE-jBqOj0EEUDw.html
@moon5964
@moon5964 4 месяца назад
Отличные ролик
@ivannebyshinets5682
@ivannebyshinets5682 2 года назад
Долго, но очень полезно!
@aliakseyshliakhtsionak9006
@aliakseyshliakhtsionak9006 2 года назад
Спасибо! Пересмотрел много видео, но Ваше оказалось наиболее доступным и содержательным!
@AndreyShyrokoriadov
@AndreyShyrokoriadov 2 года назад
Спасибо за комментарий!
@scolopendrachilopoda9704
@scolopendrachilopoda9704 2 года назад
самый лучший канал объяснениям содержательно и приятно слушать спасибо за работу :)
@apdgslfhsodbna
@apdgslfhsodbna Год назад
Хороший и содержательный материал)
@turalaliyev3977
@turalaliyev3977 2 года назад
Вы молодец! так держать, продолжайте пожалуйста!
@AndreyShyrokoriadov
@AndreyShyrokoriadov 2 года назад
Спасибо за позитивный комментарий.
@ookhands3843
@ookhands3843 Месяц назад
Спасибо. Можно пример из жизни, когда длл дергается рефдексией. В ролике объяснение не понятное. Спасибо.
@AndreyShyrokoriadov
@AndreyShyrokoriadov Месяц назад
В современных приложениях нет необходимости дергать длл рефлексией… поэтому примеров нет. Теория, которая когда-то была практикой.
@serb1146
@serb1146 2 года назад
Андрей, спасибо за видео. Т.е. получается что рефлексия в .NET это тот же механизм описания/использования типа, что и TypeLibrary для технологии COM/DCOM/ActiveX?
@AndreyShyrokoriadov
@AndreyShyrokoriadov 2 года назад
К сожалению, я не знаком с технологиями COM/DCOM/ActiveX и в связи с этим я не могу подтвердить или опровергнуть Ваше утверждение.
@ashotrustavelyan7498
@ashotrustavelyan7498 2 года назад
здравствуйте, var path = @"C:\Users\USER\source epos\MyApp\bin\Debug et5.0 ef\MyApp.dll"; вот этот путь Assembly asm = Assembly.LoadFrom(path); не видит и выводит ошибку : "System.BadImageFormatException: 'Could not load file or assembly 'MyApp, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null'. Reference assemblies should not be loaded for execution. They can only be loaded in the Reflection-only loader context. (0x80131058)". В чем же дело, не пойму ?? Заранее спасибо
@AndreyShyrokoriadov
@AndreyShyrokoriadov 2 года назад
Это ошибка говорит о том, что Вы пытаетесь загрузить dll 64bit в приложении 32bit. В этому случае MyApp.dll скомпилирована как библиотека 64bit. Попытка загрузки такой библиотеки в приложении 32bit приведет к ошибке.
@JohnDoe-uu5jy
@JohnDoe-uu5jy 3 года назад
Получается рефлексия разрушает первую парадигму ООП - Инкапсуляцию.
@AndreyShyrokoriadov
@AndreyShyrokoriadov 3 года назад
Можно так сказать... Когда-то на собеседовании меня спросили можно ли вызвать приватный метод вне класса. Я опрометчиво ответил «нет» и был не прав. Рекрутер тогда вспомнил о рефлексии. Но справедливости ради, стоит добавить что вызывать таким образом приватные методы это очень плохая практика.
@limeniye4634
@limeniye4634 3 года назад
Я думаю метаданные тоже нарушают инкапсуляцию.
@apdgslfhsodbna
@apdgslfhsodbna Год назад
Так явное использование reflection в логике порождает метапарадигму программирования, это уже не о принципах ООП
Далее
The C# Feature I Use Instead of Reflection
10:26
Просмотров 36 тыс.