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(); } }
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); }