private static object CallBase(ExternalMethodCallerConfig config) { var @class = config.ExternalType ?? ReflectionHelper.GetExternalType(config.AssemblyName, config.ClassName); var flags = BindingFlags.Default | BindingFlags.Public | BindingFlags.NonPublic; if (config.IsInstanceCall) { flags |= BindingFlags.Instance; } else { flags |= BindingFlags.Static; } if (config.CallConstructor) { var ctor = @class.GetConstructor(flags, null, config.Types, null); var result = ctor.Invoke(config.Instance, config.Arguments); return(config.Instance); } else { var method = @class.GetMethod(config.MethodName, flags, null, config.Types, null); var result = method.Invoke(config.Instance, config.Arguments); return(result); } }
public static object Call(ExternalMethodCallerConfig config) { return(CallBase(config)); }