Задать вопрос
AlexXYZ
@AlexXYZ
O Keep Clear O

Автоматическая генерация классов на основе других классов?

Всем привет.
Spoiler - Язык не важен, важен подход.

Требуется иметь несколько одинаковых структур классов, только финальные элементы должны быть разные. Т.е. если, например, объявлен класс
class CLS1{
    public int param1;
    public float param2;
    ...
}


То мне нужна автоматическая генерация класса, в котором вместо самих параметров должны быть следующие элементы:
class CLS1_Errors{
    public string[] param1;
    public string[] param2;
    ...
}


И так нужно сделать на все классы проекта. Кроме того, таких структур может быть несколько, например ещё, чтобы можно было указать какие параметры заблокировать в интерфейсе:
class CLS1_Enable{
    public bool param1;
    public bool param2;
    ...
}


Есть какие-то возможности/интструменты для решения этой задачи?
  • Вопрос задан
  • 162 просмотра
Подписаться 1 Средний 2 комментария
Пригласить эксперта
Ответы на вопрос 3
AshBlade
@AshBlade Куратор тега C#
Просто хочу быть счастливым
Для C# это можно сделать 2 путями (без учета ручного создания):
- Source Generators
- Генерация IL кода (динамическая сборка)

Лично я за 1 вариант, т.к. он будет быстрее в рантайме (все уже скомпилировано).
Ответ написан
sergey-gornostaev
@sergey-gornostaev Куратор тега Java
Седой и строгий
Если язык совсем не важен, то есть языки более пригодные для мета-программирования, например в Scala есть макросы, с помощью которых можно такое реализовать, а в Clojure и того проще. Если же ориентироваться на указанные в вопросе теги, то в Java можно написать плагин компилятора, который в процессе компиляции может с помощью Compiler API разбирать исходный код в AST, анализировать полученное дерево и на его основе генерировать новый исходный код.
Ответ написан
Комментировать
NikFaraday
@NikFaraday
Student full-stack Developer
Смотрите в сторону System.Reflection
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы