Ejemplo n.º 1
0
        private static void ProcessParameter(MethodInfo info, StringBuilder parameterString)
        {
            if (parameterString == null || parameterString.Length == 0)
            {
                return;
            }
            string value = parameterString.ToString();

            if (value.StartsWith("@return"))
            {
                info.Returns = value.Substring(7).Trim();
            }
            else if (value.StartsWith("@param"))
            {
                var split           = value.IndexOf(" ");
                var paramDefinition = value.Substring(0, split);
                var p = value.Substring(split).Trim();
                split = p.IndexOf(" ");
                string orgParamName = split > 0 ? p.Substring(0, split).Trim() : p;
                string paramName    = orgParamName;
                string description  = split > 0 ? p.Substring(split).Trim() : "";
                paramName = MethodSignatureAnalyzer.SafeParameterName(paramName);
                while (info.Parameters.ContainsKey(paramName))
                {
                    paramName = paramName + "_"; //Sometimes args are duplicated. Rename for now
                }
                bool         isIn  = paramDefinition.Contains("[in]") || paramDefinition.Contains("[in,out]") || !paramDefinition.Contains("[");
                bool         isOut = paramDefinition.Contains("[out]") || paramDefinition.Contains("[in,out]");
                PropertyInfo pi    = new PropertyInfo()
                {
                    Name         = paramName,
                    OriginalName = orgParamName,
                    Description  = description,
                    IsInput      = isIn, IsOutput = isOut
                };
                info.Parameters.Add(paramName, pi);
            }
        }