В настоящее время я работаю над компилятором в C#, где поведение определяется LambdaExpressions, а затем использует CompileToMethod, преобразуется в MethodBuilders и сохраняется в DLL. Все функции публикуются c и stati c.
Однако я не смог найти способ извлечь полезный MethodInfo (или другой метод ссылки) из MethodBuilder, пока не определено поведение и не объявлен тип создано / запечатан. Это означает, что до этого момента невозможно использовать Expression.Call для вызова этих функций. Это делает невозможным саморекурсию или взаимную ссылку между двумя функциями.
В итоге я использовал Reflection для вызова функций во время выполнения, но это очень неоптимально, и мне все еще интересно, есть ли лучший способ.
Как сделать так, чтобы функции, созданные с помощью LambdaExpression.CompileToMethod (MethodBuilder), могли самостоятельно вызывать? c метод для DLL?