Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Задачи для практики: рефлексия #8

Open
nevoroman opened this issue Oct 14, 2021 · 4 comments
Open

Задачи для практики: рефлексия #8

nevoroman opened this issue Oct 14, 2021 · 4 comments
Assignees
Labels
Нужна помощь Задача, в котором нам нужна помощь от сообщества Нужны материалы Для закрытия задачи не хватает каких-то материалов

Comments

@nevoroman
Copy link
Contributor

nevoroman commented Oct 14, 2021

Что мы хотим?

Задачи, которые помогут использовать знания по рефлексии, поиграться с ней и понять, зачем эти инструменты вообще нужны.

В каком виде?

Дискуссионно, но пока мне это видится как .NET проект с тестами, залитый в этот или отдельный репозиторий. Мы даем базовый API без реализации и тесты, проверяющие, что задача выполнена правильно.

Возможно, хорошо будет сюда же включить некоторые code samples, позволяющие посмотреть на правильную реализацию схожих задач — но не обязательно, материалов из репозитория должно быть достаточно.

Зачем?

Без хороших практических задачек рефлексию может быть изучать сложно и непонятно, а вот практиковаться в применении рефлексии интересно.

Что нужно?

Предложения по конкретным задачам и героические люди, готовые для этих задач написать API и тесты. С нас понятное описание для задачи, ссылки на все нужные для ее выполнения материалы любая помощь в подготовке задач.

@nevoroman nevoroman added Нужна помощь Задача, в котором нам нужна помощь от сообщества Нужны материалы Для закрытия задачи не хватает каких-то материалов labels Oct 14, 2021
@nevoroman nevoroman self-assigned this Oct 14, 2021
@vabka
Copy link

vabka commented Oct 14, 2021

Кстати в .NET 6 расширился API для рефлексии:
dotnet/runtime#54985

@nevoroman
Copy link
Contributor Author

Кстати в .NET 6 расширился API для рефлексии: dotnet/runtime#54985

Думаю, добавим эту информацию после релиза.

@koviant
Copy link

koviant commented Oct 15, 2021

Привет!
Идеи для задач:

  1. Написать свой сериалайзер в JSON, который вытягивает все проперти из переданного объекта. Можно навешивать свои аттрибуты JsonName(string) или Ignore. Соответственно первый задаёт имя, которое должно быть у этого проперти в json'e, второй аттрибует означает игнорирование этого проперти.
  2. Имея уже какую-то готовую программу, добавить в неё поддержку плагинов. Вместе с основным приложением идёт интерфейс IPlugin, который содержит необходимые для плагина поля и методы. В моём конкретном случае, когда встретил такую задачу, делали расширение для wpf-приложения, интерфейс грубо был:
public interface IPlugin
{
    string Name { get; } // имя плагина, показываемое в менюшке
    void Start(); // запуск работы плагина
}

Приложение при запуске сканит специально отведённую папку на наличие в ней .dll файлов, из них загружает типы, которые наследуются от этого интерфейса, создаёт инстанс типа и складывает в свою коллекцию плагинов.

@vabka
Copy link

vabka commented Nov 9, 2021

Думаю, добавим эту информацию после релиза.

Релиз наступил :)
Вот ссылка на документацию: https://docs.microsoft.com/en-us/dotnet/api/system.reflection.nullabilityinfocontext?view=net-6.0

Правда кмк, перед этим материалом следует ещё узнать про nullable reference types.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Нужна помощь Задача, в котором нам нужна помощь от сообщества Нужны материалы Для закрытия задачи не хватает каких-то материалов
Development

No branches or pull requests

3 participants