internal JsonRpcParameter(JsonRpcParameterBuilder builder, JsonRpcMethod method)
 {
     Debug.Assert(builder != null);
     Debug.Assert(builder.Position >= 0);
     Debug.Assert(method != null);
     
     _name = builder.Name;
     _parameterType = builder.ParameterType;
     _position = builder.Position;
     _isParamArray = builder.IsParamArray;
     _method = method;
 }
        private static void BuildParameter(JsonRpcParameterBuilder builder, ParameterInfo parameter)
        {
            Debug.Assert(parameter != null);
            Debug.Assert(builder != null);
            
            builder.Name = parameter.Name;
            builder.ParameterType = parameter.ParameterType;
            builder.Position = parameter.Position;
            builder.IsParamArray = parameter.IsDefined(typeof(ParamArrayAttribute), true);

            //
            // Build via attributes.
            //
            
            object[] attributes = parameter.GetCustomAttributes(typeof(IParameterReflector), true);
            foreach (IParameterReflector reflector in attributes)
                reflector.Build(builder, parameter);
        }
 public JsonRpcParameterBuilder DefineParameter()
 {
     JsonRpcParameterBuilder builder = new JsonRpcParameterBuilder(this);
     builder.Position = Parameters.Count;
     Parameters.Add(builder);
     return builder;
 }
 public void Init()
 {
     _methodBuilder = (new JsonRpcServiceClassBuilder()).DefineMethod();
     _builder = _methodBuilder.DefineParameter();
 }