internal Method(MethodBuilder methodBuilder, ServiceClass 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; _handler = methodBuilder.Handler; _idempotent = methodBuilder.Idempotent; _attributes = DeepCopy(methodBuilder.GetCustomAttributes()); _class = clazz; // // Set up parameters and their names. // ICollection parameterBuilders = methodBuilder.Parameters; _parameters = new Parameter[parameterBuilders.Count]; _parameterNames = new string[parameterBuilders.Count]; foreach (ParameterBuilder parameterBuilder in parameterBuilders) { Parameter parameter = new Parameter(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 = (Parameter[]) _parameters.Clone(); InvariantStringArray.Sort(_parameterNames, _sortedParameters); }