示例#1
0
        private static void EnsureDataCached(Type type)
        {
            if (!typeToMethods.ContainsKey(type))
            {
                var methods     = MethodLister.SerializeableMethodsOn(type);
                var methodNames = new string[methods.Count + 1];
                methodNames[0] = NoMethodSelected;
                for (int i = 0; i < methods.Count; i++)
                {
                    methodNames[i + 1] = MethodName(methods[i]);
                }

                var fields = FieldUtil.SerializableFields(type);

                typeToMethods[type] = methods;
                typeToFields[type]  = fields.Select(field => new SerializableFieldSetter(field)).ToList();
                typeToNames[type]   = methodNames.Concat(fields.Select(ShowFieldName)).ToArray();
            }
        }
示例#2
0
        private static string MethodName(SerializableMethod method)
        {
            var methodInfo = method.MethodInfo;

            if (methodInfo == null)
            {
                return("Null method");
            }

            var parameterTypes = method.ParameterTypes;
            var parameterNames = method.ParameterNames;

            if (MethodLister.IsSetter(methodInfo))
            {
                var nameBuilder = new StringBuilder(methodInfo.Name.Replace("_", " "));
                nameBuilder[0] = 'S'; //Upper case "set"
                return(string.Format("{0} ({1})", nameBuilder.ToString(), parameterTypes[0]));
            }

            string printData = methodInfo.Name;

            printData += "(";
            if (parameterTypes.Length > 0)
            {
                for (var i = 0; i < parameterTypes.Length; i++)
                {
                    printData += string.Format("{0} {1}", parameterTypes[i], parameterNames[i]);
                    if (i != parameterTypes.Length - 1)
                    {
                        printData += ", ";
                    }
                }
            }
            printData += ")";
            if (methodInfo.ReturnType != typeof(void))
            {
                printData += " => " + methodInfo.ReturnType.Name;
            }
            return(printData);
        }