clojure.lang.Reflector.CallMethod C# (CSharp) Метод

CallMethod() публичный статический Метод

public static CallMethod ( string methodName, IList typeArgs, bool isStatic, Type t, object target ) : object
methodName string
typeArgs IList
isStatic bool
t System.Type
target object
Результат object
        public static object CallMethod(string methodName, IList<Type> typeArgs, bool isStatic, Type t, object target, params object[] args)
        {
            Expression targetExpr = isStatic ? Expression.Constant(t, typeof(Type)) : Expression.Constant(target);
            List<Expression> exprs = new List<Expression>();
            foreach (object arg in args)
                exprs.Add(Expression.Constant(arg));

            Expression[] argExprs = ClrExtensions.ArrayInsert<Expression>(targetExpr, exprs);

            // TODO: Get rid of Default
            InvokeMemberBinder binder = new ClojureInvokeMemberBinder(ClojureContext.Default, methodName, argExprs.Length, isStatic);

            Expression dyn = Expression.Dynamic(binder, typeof(object), argExprs);

            LambdaExpression lambda = Expression.Lambda<clojure.lang.Compiler.ReplDelegate>(dyn);
            return lambda.Compile().DynamicInvoke();
        }