示例#1
0
        private void ProcessEnumeration(IEnumeration enumeration)
        {
            cw.WriteLine("[DataContract]");
            cw.WriteLine("public enum {0}", enumeration.Name);
            cw.BeginScope();
            for (int i = 0; i < enumeration.Items.Count; i++)
            {
                IEnumerationItem item = enumeration.Items[i];
                cw.WriteLine("[EnumMember] {0} = {1}{2}",
                             item.Name,
                             item.Value,
                             i + 1 == enumeration.Items.Count ? "" : ",");
            }
            cw.EndScope();

            if (this.genie.Lamp.Config.Patterns.Localization != null)
            {
                cw.WriteLine("public static class {0}L10n", enumeration.Name);
                cw.BeginScope();
                cw.BeginFunction("public static string GetName({0} value)", enumeration.Name);
                cw.WriteLine("switch(value)");
                cw.BeginScope();
                for (int i = 0; i < enumeration.Items.Count; i++)
                {
                    IEnumerationItem item    = enumeration.Items[i];
                    string           caption = item.HasDoc ?
                                               item.Doc.GetLabel(new System.Globalization.CultureInfo("en")) : item.Name;
                    cw.WriteLine("case {0}.{1}: return {2}.L.Catalog.GetString(\"{3}\");",
                                 enumeration.Name,
                                 item.Name,
                                 ServicesLayerConfig.ServicesInterfacesNamespace,
                                 String.IsNullOrWhiteSpace(caption) ? item.Name : caption);
                }
                cw.EndScope();
                cw.WriteLine("throw new Exception(String.Format(\"Unsupported value: {{0}}. Enum: {0}\", value));", enumeration.Name);
                cw.EndFunction();
                cw.WriteLine();
                string enumItemClassName = String.Format("{0}Item", enumeration.Name);
                cw.BeginClass(AccessLevel.Public, false, enumItemClassName, null);
                cw.WriteLine("public {0} Id  {{ get; set; }}", enumeration.Name);
                cw.WriteLine("public string Name { get; set; }");
                cw.EndClass();
                cw.WriteLine();
                cw.BeginFunction("public static IList<{0}> GetList()", enumItemClassName);
                cw.WriteLine("List<{0}> list = new List<{0}>();", enumItemClassName);
                cw.WriteLine("{0}[] items = ({0}[])Enum.GetValues(typeof({0}));", enumeration.Name);
                cw.WriteLine("for(int i = 0; i < items.Length; i++ )");
                cw.BeginScope();
                cw.WriteLine("{0} item = new {0}() {{ Id = items[i], Name = GetName(items[i]) }};", enumItemClassName);
                cw.WriteLine("list.Add(item);");
                cw.EndScope();
                cw.WriteLine("return list;");
                cw.EndFunction();
                cw.EndScope();
                cw.WriteLine();
            }
        }
示例#2
0
        public static string FormatEnumeration(IEnumerationItem item)
        {
            IEnumeration _enumeration = item.Enumeration;

            StringBuilder stringBuilder = new StringBuilder();

            if (TemplateClass.SystemClasses.Any(_systemClass => _systemClass.Name == _enumeration.Name))
            {
                stringBuilder.Append(_enumeration.Namespace.Name).Append(".");
            }

            stringBuilder.Append(_enumeration.Name).Append(".").Append(item.Name);

            return(stringBuilder.ToString());
        }
示例#3
0
        public void Add(IEnumerationItem item)
        {
            this.items.Add(item);

            item.Enumeration = this;
        }