Отражать, генерировать, компилировать, выполнять, дизассемблировать, декомпилировать, отражать - PullRequest
0 голосов
/ 11 января 2012

Прежде чем вернуться к делу, я решил взять несколько выходных для развлекательного кодирования. Несколько 30-часовых дней без свежего воздуха? Звучит фантастически, для разнообразия.

Я боролся с генерацией управляемого кода с течением времени и всегда задавался вопросом, существует ли круговая связь между кодом на C #, отражением и кодированием. Никогда не удосужился исследовать это, к сожалению. Таким образом, цель состоит в том, чтобы создать бесполезные и раздражающие сложные классы с вложенными обобщениями, ограничениями, анонимными методами, делегатами, вложенными сложными ссылочными типами и т. Д. И использовать отражение + кодирование для регенерации их исходного кода из класса CodeGenerator<T>, где T бесполезные занятия.

Вдохновение пришло от откровенной мести. Наличие управляющей компании отвлекает вас от программирования, а выполнение увлекательных проектов в ваше несуществующее свободное время становится неприятным из-за отсутствия практики и отсутствия связи. Я чувствую себя идиотом сейчас, но я покажу вам! Глупый CLR! Тем не менее, пожалуйста, не принимайте это за шутку. Я очень серьезно отношусь к этим маленьким каникулам.

Это произошло совсем недавно при попытке достичь этого . Я хотел сгенерировать код без использования строковых манипуляций и был озадачен тем, как создать вызов конструктора new XyzObject() во время выполнения. Я НЕ хочу использовать default (T), потому что он устанавливает ссылочные типы в null. ИМЕЕТ путь. Глупый CLR!

Почему ТАК? Ну, это должно быть веселое обсуждение, чтобы начать с. Здесь можно многому научиться.

Итак, план:

  • Создайте несколько бесполезных и раздражающе сложных классов.
  • Отвечать на забавные и / или глупые предложения членов SO (надеюсь).
  • Попытка обойти бесполезные классовые структуры с помощью отражения.
  • Ложись проголосовали за то, что застряли и задали глупые вопросы.
  • Успешно пройти бесполезные классовые структуры с помощью отражения.
  • Попытка восстановить код для бесполезных классов с использованием кодировки.
  • Ложись проголосовали за то, что застряли и задали глупые вопросы.
  • Успешно восстановить код для бесполезных классов с использованием кодировки.
  • Получайте знания по пути.
  • Используйте эти знания о не подозревающих разработчиках дома, чтобы обеспечить соблюдение соглашений посредством генерации кода.
...