private static void BuildMethod(JsonRpcMethodBuilder builder, MethodInfo method) { Debug.Assert(method != null); Debug.Assert(builder != null); builder.InternalName = method.Name; builder.ResultType = method.ReturnType; builder.Dispatcher = new Dispatcher(method); // // Build via attributes. // object[] attributes = method.GetCustomAttributes(typeof(IMethodReflector), true); foreach (IMethodReflector reflector in attributes) reflector.Build(builder, method); // // Fault in the method name if still without name. // if (builder.Name.Length == 0) builder.Name = method.Name; // // Build the method parameters. // foreach (ParameterInfo parameter in method.GetParameters()) BuildParameter(builder.DefineParameter(), parameter); }
internal JsonRpcMethod(JsonRpcMethodBuilder methodBuilder, JsonRpcServiceClass clazz) { Debug.Assert(methodBuilder != null); Debug.Assert(clazz != null); _name = methodBuilder.Name; _internalName = Mask.EmptyString(methodBuilder.InternalName, methodBuilder.Name); _resultType = methodBuilder.ResultType; _description = methodBuilder.Description; _dispatcher = methodBuilder.Dispatcher; _attributes = DeepCopy(methodBuilder.GetCustomAttributes()); _class = clazz; JsonRpcParameterBuilder[] parameterBuilders = methodBuilder.GetParameters(); _parameters = new JsonRpcParameter[parameterBuilders.Length]; int paramIndex = 0; foreach (JsonRpcParameterBuilder parameterBuilder in parameterBuilders) _parameters[paramIndex++] = new JsonRpcParameter(parameterBuilder, this); }
internal JsonRpcMethod(JsonRpcMethodBuilder methodBuilder, JsonRpcServiceClass clazz) { Debug.Assert(methodBuilder != null); Debug.Assert(clazz != null); _name = methodBuilder.Name; _internalName = Mask.EmptyString(methodBuilder.InternalName, methodBuilder.Name); _resultType = methodBuilder.ResultType; _description = methodBuilder.Description; _dispatcher = methodBuilder.Dispatcher; _attributes = DeepCopy(methodBuilder.GetCustomAttributes()); _class = clazz; // // Set up parameters and their names. // ICollection parameterBuilders = methodBuilder.Parameters; _parameters = new JsonRpcParameter[parameterBuilders.Count]; _parameterNames = new string[parameterBuilders.Count]; foreach (JsonRpcParameterBuilder parameterBuilder in parameterBuilders) { JsonRpcParameter parameter = new JsonRpcParameter(parameterBuilder, this); int position = parameter.Position; _parameters[position] = parameter; _parameterNames[position] = parameter.Name; } // // Keep a sorted list of parameters and their names so we can // do fast look ups using binary search. // _sortedParameters = (JsonRpcParameter[]) _parameters.Clone(); Array.Sort(_parameterNames, _sortedParameters, Comparer.DefaultInvariant); }
public JsonRpcMethodBuilder DefineMethod() { JsonRpcMethodBuilder builder = new JsonRpcMethodBuilder(this); MethodList.Add(builder); return builder; }
public void Init() { _classBuilder = new JsonRpcServiceClassBuilder(); _builder = _classBuilder.DefineMethod(); }
public void Build(JsonRpcMethodBuilder builder, MethodInfo method) { builder.AddCustomAttribute(this); }
public void Init() { _methodBuilder = (new JsonRpcServiceClassBuilder()).DefineMethod(); _builder = _methodBuilder.DefineParameter(); }
void IMethodReflector.Build(JsonRpcMethodBuilder builder, MethodInfo method) { builder.Description = Text; }
internal JsonRpcParameterBuilder(JsonRpcMethodBuilder method) { Debug.Assert(method != null); _method = method; }
void IMethodReflector.Build(JsonRpcMethodBuilder builder, MethodInfo method) { builder.AddCustomAttribute(this); }