С C # 4.0 отражение не требуется, поскольку DLR может вызывать его с использованием типов времени выполнения. Так как использование библиотеки DLR представляет собой боль динамически (вместо кода генерации компилятора C # для вас), open source framework Dynamitey (.net standard 1.5) дает вам простой кэшированный доступ во время выполнения те же вызовы, которые генерирует компилятор для вас.
var name = InvokeMemberName.Create;
Dynamic.InvokeMemberAction(this, name("GenericMethod", new[]{myType}));
var staticContext = InvokeContext.CreateStatic;
Dynamic.InvokeMemberAction(staticContext(typeof(Sample)), name("StaticMethod", new[]{myType}));
Проблема состоит в том, что я использую круглые скобки (' (' и')'), а не квадратные скобки (' [' и']'), для списка аргументов.
Это должно начаться как это:
(defn match [x y &optional binds]
(я нашел ответ в Clojure Программирования Stuart Halloway.)
Кроме того, конусовидная форма не использует parens для своих пунктов:
(cond
test1 eval1
test2 eval2
:else eval3)
Основной ответ был уже дан (аргументы функции находятся в [] не () в clojure) но прежде, чем попытаться смешать с кодом из источников языка Common LISP, я рекомендовал бы на самом деле изучить синтаксис Clojure, поскольку это - Ничто близко к чистому порту CL, вообще. Вы просто собираетесь попасть в беду, рассматривая его как он.