private void GenerateModelEnum(Type type) { if (ModelsCodeGenerated.Contains(type) || CannotGenerateAssemblyTypes(type)) { return; } ModelsCodeGenerated.Add(type); EnumReferenceInfo enumReferenceInfo = new EnumReferenceInfo { Name = type.Name, NameSpace = type.Namespace }; Type baseEumType = Enum.GetUnderlyingType(type); enumReferenceInfo.TypeName = GetFullNameOfType(baseEumType, true); foreach (object name in Enum.GetValues(type)) { object res = Convert.ChangeType(name, baseEumType); string value = ""; if (res != null) { value = res.ToString(); } if (!enumReferenceInfo.KeyValues.Any(x => x.Key == name.ToString())) { enumReferenceInfo.KeyValues.Add(new KeyValue <string, string>(name.ToString(), value)); } } NamespaceReferenceInfo.Enums.Add(enumReferenceInfo); }
private void GenerateModelEnum(EnumReferenceInfo enumReferenceInfo, string prefix, StringBuilder builder) { if (string.IsNullOrEmpty(enumReferenceInfo.TypeName) || enumReferenceInfo.TypeName.Equals("byte", StringComparison.OrdinalIgnoreCase) || enumReferenceInfo.TypeName.Equals("int", StringComparison.OrdinalIgnoreCase)) { enumReferenceInfo.TypeName = "Int"; } builder.AppendLine(prefix + $"public enum {enumReferenceInfo.Name.ToCamelCase()} : {enumReferenceInfo.TypeName} {{"); foreach (SignalGo.Shared.Models.KeyValue <string, string> name in enumReferenceInfo.KeyValues) { builder.AppendLine($"{prefix + prefix} case {name.Key.ToCamelCase()} = {name.Value}"); } builder.AppendLine($"{prefix + prefix }static func detect{enumReferenceInfo.Name}(value: {enumReferenceInfo.TypeName}) -> {enumReferenceInfo.Name.ToCamelCase()} {{"); builder.AppendLine($"{prefix + prefix + prefix}switch value {{"); foreach (SignalGo.Shared.Models.KeyValue <string, string> name in enumReferenceInfo.KeyValues) { builder.AppendLine($"{prefix + prefix + prefix} case {name.Value}:"); builder.AppendLine($"{prefix + prefix + prefix + prefix} return .{name.Key.ToCamelCase()}"); } if (enumReferenceInfo.KeyValues.Count > 0) { builder.AppendLine($"{prefix + prefix + prefix} default:"); builder.AppendLine($"{prefix + prefix + prefix + prefix} return .{enumReferenceInfo.KeyValues[0].Key.ToCamelCase()}"); } builder.AppendLine(prefix + prefix + prefix + prefix + "}"); builder.AppendLine(prefix + prefix + prefix + "}"); builder.AppendLine(prefix + "}"); builder.AppendLine(); }
private void GenerateModelEnum(string serviceName, EnumReferenceInfo enumReferenceInfo, string prefix, StringBuilder builder) { builder.AppendLine("package " + serviceName + "." + enumReferenceInfo.NameSpace + ";"); //+ " : " + enumReferenceInfo.TypeName builder.AppendLine(); builder.AppendLine("public enum " + enumReferenceInfo.Name + " {"); //+ " : " + enumReferenceInfo.TypeName foreach (SignalGo.Shared.Models.KeyValue <string, string> name in enumReferenceInfo.KeyValues) { string lastChar = enumReferenceInfo.KeyValues.IndexOf(name) == enumReferenceInfo.KeyValues.Count - 1 ? ";" : ","; builder.AppendLine($"{prefix}{name.Key}(\"{name.Key}\", {name.Value}){lastChar}"); } builder.AppendLine(prefix + $@"private String stringValue; private int intValue; private {enumReferenceInfo.Name}(String toString, int value) {{ stringValue = toString; intValue = value; }} @Override public String toString() {{ return stringValue; }}"); builder.AppendLine("}"); builder.AppendLine(); }
private void GenerateModelEnum(EnumReferenceInfo enumReferenceInfo, string prefix, StringBuilder builder) { builder.AppendLine(prefix + "export enum " + enumReferenceInfo.Name + " {");//+ " : " + enumReferenceInfo.TypeName foreach (SignalGo.Shared.Models.KeyValue <string, string> name in enumReferenceInfo.KeyValues) { builder.AppendLine($"{prefix + prefix}{name.Key} = {name.Value},"); } builder.AppendLine(prefix + "}"); builder.AppendLine(); }