public ModelType(Model model) { Model = model; }
private static CodeTypeReference GetPropertyType(Model model, Property prop) { CodeTypeReference result = null; string type = Util.GetType(prop.Type); bool isString = false; if (type.Contains('.')) { result = new CodeTypeReference(type); } else if (model.Generics != null && model.Generics.Contains(type)) { result = new CodeTypeReference(type, CodeTypeReferenceOptions.GenericTypeParameter); } else { switch (type) { case "phoneNumber": case "string": result = new CodeTypeReference(typeof(string)); isString = true; break; case "long": result = new CodeTypeReference(typeof(long)); break; case "int": result = new CodeTypeReference(typeof(int)); break; case "DateTime": result = new CodeTypeReference(typeof(DateTime)); break; case "bool": result = new CodeTypeReference(typeof(bool)); break; case "double": result = new CodeTypeReference(typeof(double)); break; case "string[]": result = new CodeTypeReference(typeof(string[])); break; case "long[]": result = new CodeTypeReference(typeof(long[])); break; default: result = new CodeTypeReference(typeof(string)); isString = true; break; } } if (prop.CanBeNull && !isString && !type.EndsWith("[]") && !type.Contains(".")) { CodeTypeReference tmp = new CodeTypeReference(typeof (Nullable<>)); tmp.TypeArguments.Add(result); result = tmp; } return result; }
public static string GetNamespace(Model model) { return ModelsNamespaces + Util.FixCase(Util.FixNamespace(model.Namespace)); }
private static CodeTypeDeclaration CreateEnum(string name, Model model) { var type = new CodeTypeDeclaration(Util.FixCase(name)); type.IsEnum = true; AddSummary(type.Comments, model.Description); foreach (var val in model.Enum) { var member = new CodeMemberField(type.Name, Util.GetEnumValue(val)); AddEnumMemberAttribute(member.CustomAttributes, val); type.Members.Add(member); } return type; }
public static string GetGenericsParameters(Model model) { StringBuilder result = new StringBuilder(); if (model.Generics != null && model.Generics.Length > 0) { result.Append('<'); for (int i = 0; i < model.Generics.Length; i++) { if (i > 0) { result.Append(','); } result.Append(model.Generics[i]); } result.Append('>'); } return result.ToString(); }