public void Test() { string name = null; SqlParameter[] parameters = null; StoredProcedureAttribute attribute = new StoredProcedureAttribute("[maprocedurestockee] @p1 Xml Input, @p2 Bit Output"); attribute.GenerateStoredProcedure(out name, out parameters); }
private void GetBodyForMethod(MethodContext methodContext) { ParameterExpression param; var ret = methodContext.Return(methodContext.TaskType); var task = methodContext.AddVariable(typeof(Task <IDataReader>), "task"); var parameterConverter = StoredProcedureAttribute.GetConverter(Caller); if (parameterConverter == null) { throw new InvalidOperationException($"Could not get parameter converter for method {Caller.Name} of type {Caller.DeclaringType.FullName}"); } if (parameterConverter is DefaultParameterConverter parameterConverterInternal) { param = parameterConverterInternal.Convert(methodContext, Parameters, Caller); } else { param = CustomConverter(methodContext, parameterConverter); } var dbConnectionParameters = Caller.GetCustomAttribute <DbConnectionParametersAttribute>(); if (dbConnectionParameters != null) { SetRequestTimeout(methodContext, param, dbConnectionParameters); } var disp = methodContext.DispatcherMethod; var arguments = GetDispatcherAttributes(methodContext, param, disp); methodContext.Do(Expression.Assign(task, disp == null ? Expression.Call(ThisParameter, _nonDispatchedSpReaderWrapperMethodInfo, arguments) : Expression.Call(ThisParameter, disp, arguments))); var reader = GetReaderWrapper(methodContext); var action = reader.Invoke(null, new object[0]); var proxType = action.GetType(); var prox = methodContext.AddVariable(proxType, "proxy"); methodContext.Do(prox.Assign(action)); var invokeProx = proxType.GetMethod("Invoke"); methodContext.Do(ret.Assign(Expression.Call(prox, invokeProx, task))); }