На какую платформу / среду выполнения вы ориентируетесь? Я не знаю о Mono, но стандарт .Net 1.x не поддерживает Delegate.CreateDelegate. Всегда имейте в виду, что вы пишете свой код для ограниченного подмножества .Net Framework. Также имейте в виду, что ваш код неизбежно будет AOT-компилироваться на некоторых платформах (il2cpp, iOS и т. Д.), Поэтому некоторые функции отражения / генерации будут недоступны.
Примечание. AOT означает опережающее время, т. Е. Ваш код скомпилирован с машинными инструкциями, а не с промежуточным языком. Отражение - это когда вы используете сам код в качестве данных, поэтому, например, вы можете получить список свойств, которые определяет класс. Emit означает генерацию кода во время выполнения. Если вы не понимаете, что это такое, вам, вероятно, стоит заняться изучением. В долгосрочной перспективе оно того стоит.