В настоящее время я занимаюсь разработкой приложения, в котором вы можете создавать «программы» без написания исходного кода, просто нажмите и играйте, если хотите.
Теперь вопрос в том, как создать исполняемую программу из моей модели данных. Есть много возможностей, но я не уверен, какая из них лучше для меня. Мне нужно генерировать сборки с классами и пространством имен и всем, что может быть частью приложения.
Класс CodeDOM: я слышал о множестве ограничений и ошибок этого класса. Мне нужно создать атрибуты для параметров метода и возвращаемых значений. Это поддерживается?
Создайте исходный код C # программно, а затем вызовите для него CompileAssemblyFromFile: это будет работать, поскольку я могу генерировать любой код, который я хочу, и C # поддерживает большинство функций CLR. Но разве это не будет медленным?
Используйте класс отражения ILGenerator: я думаю, что с помощью этого я могу генерировать любой возможный код .NET. Но я думаю, что это намного сложнее и подвержено ошибкам, чем другие подходы?
Есть ли другие возможные решения?
EDIT:
Инструмент является общим для разработки приложений, он не ограничен конкретным доменом. Я не знаю, можно ли считать это языком визуального программирования. Пользователь может создавать классы, методы, вызовы методов, всевозможные выражения. Это не будет очень ограничение, потому что вы должны быть в состоянии делать большинство вещей, которые разрешены в реальных языках программирования.
На данный момент многие вещи все еще должны быть записаны пользователем в виде текста, но цель в конце состоит в том, чтобы почти все можно было щелкнуть вместе.