C# programming. Lesson 14. Reflection
HTML-код
- Опубликовано: 25 май 2014
- Метаданные сборки и типов. Получение доступа к метаданным. Атрибуты.
Ссылки на предыдущие уроки:
Урок 13. Введение в LINQ. • Уроки C#. Введение в LINQ
Урок 12. Лямбда-выражения. • Уроки C#. Лямбда-выраж...
Урок 11. Три кита. • Уроки C#. Три кита
Урок 10. Исключения. • Уроки C#. Исключения
Урок 9. Множества. • Уроки C#. Множества
Урок 8. Обобщения. • Уроки C#. Обобщения
Урок 7. Пример создания приложения. • Уроки C#. Пример созда...
Урок 6. Интерфейсы. • Уроки C#. Интерфейсы.
Урок 5. Запечатанные, статические и абстрактные классы. • Уроки C#. Запечатанные...
Урок 4. Наследование и полиморфизм. • Уроки C#. Наследование...
Урок 3. Делегаты и события. • Уроки C#. Делегаты и с...
Урок 2. Состав типа. • Уроки C#. Состав типа.
Урок 1. Типы данных. • Уроки C#. Типы данных.
Даже спустя столько лет лучшие уроки которые я только видел!
Я лучше уроков не находил, спасибо вам огромное, экономите кучу времени у студентов)
Присоединяюсь ко всем. Очень рад, что Вы нас не забыли!
Лайк не глядя:) И огромное человеческое спасибо
Спасибо большое! Вы очень понятно и позитивно рассказываете, это редкость и круто :)
Всё чинно и благородно, респект!
Огромное спасибо за уроки, Игорь!
Большое спасибо! Очень полезный и информативный урок, с отличным объяснением! Хоть и этому видео уже 5 лет, но, как по мне, оно до сих пор остается актуальным и полезным, и помогло мне разобраться с данной темой
Дождались!!!
Круто! Качественно изложенный материал и очень доступно.
Большое спасибо.
Жаль, что вы бросили снимать, у вас очень хорошо получалось
Отличные уроки! Хотелось бы послушать про асинхронное программирование
Вероятно скоро будет.
Спасибо большое, несколько дней бился об эту тему, не мог понять для чего нужны эти атрибуты и как они могут быть полезны
Как обычно, высший пилотаж! Но чуть-чуть не докрутили с Reflection - маленького примера не хватило как в рантайме подгрузить DLL (через Assembly) с последующим созданием объекта класса и вызовом его метода
Спасибо огромное. Все разложили по полочкам
Ура продолжение я так его ждал спасибо
за атрибуты отдельное спасибо!!
Прям праздник :)
Спасибо, очень доступно для понимания)
Тоже ставлю + авансом.
Спасибо за урок.
Но всё же, как всё сложно.
Очень хороший урок, спасибо большое
Очень полезная информация
Хорош, спасибо)))
Браво!
Отличные уроки. А можно поподробнее рассказать про атрибуты [Import] и [Export]?
Спасибо Вам гигантское!
спасибо
Спасибо! Интересно ! Подобными методами пишутся кряки? И зачем может понадобиться ограничивать действия атрибутов ?
Спасибо, вроде все понятно кроме одного. Хотелось бы спросить какие могут быть практические применения у reflection
Не понял, а как модифицировать код атрибутами?! ( Аля препроцессор )
У меня вопрос. Вот есть у нас в конце строка var attribute=(SimpleAttribute)attributes[0]; Она, получается, должна ссылаться на первый из атрибутов или на первую группу одноименных атрибутов? Потому что когда я присвоил обоим свойствам один атрибут и задал Number для второго, то вывело все 2 свойства со значением Number равным нулю для свойства с не заданным свойством атрибута.
Эта строка просто ссылается на первый атрибут у члена типа или самого типа, если он есть.
Если атрибутов нет - получим исключение.
Если атрибут/атрибуты есть, но первый из них не является SimpleAttribute - получим исключение.
Если все ОК, то дальше анализируем полученный атрибут.
Как мне использовать переменную string в type.GetType(Наименование переменной) За место type.GetType("Namespace.ClassName") ?
Возник вопрос на 14.23 в фориче ми сначала обьявляем перемнную value как var, а потом , через 2 строчки присваиваем ей другое значене. Как оно работет, ведь переприсваивать к вал нельзя. Или я что то не так понял?
К var можно присваивать, если значение соответствует такому же типу, с которым прошла её инициализация. Короче, пример:
var text = 5; // Все ок. В переменной значение типа int
text = 7; // Все ок, т.к. значение типа int
text = "7"; // Ошибка, т.к. значение типа string, а ожидается int
Это можно использовать как чит в вашей программе либо сделать античит
Это типа как pom.xml в Maven?
он сказал класс Стюкен?
А зачем оно? Где оно юзаеться? Начинающему C# программисту нужно уметь его использовать или на певый этапах(и даже на первых этапах работы) достаточно будет просто знать "что это" и "с чем его едят"? *так много вопросов и так мало ответов...*
Часто используется в собственных generic классах, когда не знаешь что именно придет вместо . Получаем Type type = typeof(T) и делаем, что хотим далее
Нигде нет описания, как работает отражение на низком уровне. Только как применить и для чего, нужно.
Занадто вже швидко оглянуто Reflection. Ця тема заслуговує на повноцінний годинний урок. А так трохи про Відбиття трохи про Атрибути і все.
Свободен!
Ну и главный вопрос зачем нам нужен этот костыль, что он позволяет нам делать то что мы не могли раньше, а может он нам жизнь упрощает? Нет, это какие то дебри. Номер повесить? ок а константу создать как поле и так же вывести не получится, или для такой хрени надо целый класс городить?
Используется, например в модинге игр. Игра используя рефлексию может загружать модовые сборки, и взаимодействовать с её классами. Ещё используется декомпиляторами. Это не костыль, это возможность забраться под капот, и получить больше власти над программами, такая возможность должна быть в любом серьёзном ЯП.
Реклама к ролику и то интереснее