コード例 #1
0
        private void GenerateEnumType(Type t)
        {
            EnumDeclaration e = this.ns.Enums[this.conformer.ToCapitalized(t.Name)];

            e.CustomAttributes.Add(typeof(SerializableAttribute));

            if (e == null)
            {
                throw new Exception();
            }
            // generate fields and properties
            foreach (FieldInfo f in t.GetFields())
            {
                if (f.Name == "Value__")
                {
                    continue;
                }

                FieldDeclaration field = e.AddField(f.Name);
                // add XmlEnum attribute
                AttributeDeclaration xmlEnum = field.CustomAttributes.Add(typeof(XmlEnumAttribute));
                AttributeArgument    arg     = xmlEnum.Arguments.Add(
                    "Name",
                    Expr.Prim(f.Name)
                    );
            }
        }
コード例 #2
0
 public void can_create_enum()
 {
     var @enum = new EnumDeclaration("TransactionLineTypes");
     @enum.AddField("Pending", 1);
     var builder = new CodeBuilder();
     builder.GenerateCode(Console.Out, "Awish.Lars.Core.Enums", @enum);
 }
コード例 #3
0
        private void GenerateEnumType(Type t)
        {
            EnumDeclaration e = this.ns.Enums[this.conformer.ToCapitalized(t.Name)];

            if (e == null)
            {
                throw new Exception();
            }
            // generate fields and properties
            foreach (FieldInfo f in t.GetFields())
            {
                if (f.Name == "Value__")
                {
                    continue;
                }

                var field = e.AddField(f.Name);
                // add XmlEnum attribute
                var xmlEnum = new CodeAttributeDeclaration("XmlEnum");
                var arg     = new CodeAttributeArgument(
                    "Name",
                    new CodePrimitiveExpression(f.Name)
                    );
                xmlEnum.Arguments.Add(arg);
                field.CustomAttributes.Add(xmlEnum);
            }
        }
コード例 #4
0
ファイル: EnumGenerator.cs プロジェクト: chrcar01/HyperActive
        /// <summary>
        /// Generates the specified writer.
        /// </summary>
        /// <param name="tableName">Name of the table.</param>
        /// <param name="nameField">The name field.</param>
        /// <param name="valueField">The value field.</param>
        public virtual ICodeDom<CodeTypeDeclaration> Generate(string tableName, string nameField, string valueField)
        {
            if (String.IsNullOrEmpty(tableName))
            {
                throw new ArgumentException("tableName is null or empty.", "tableName");
            }

            var tableSchema = _dbProvider.GetTableSchema(tableName);
            if (tableSchema == null)
            {
                throw new HyperActiveException("Table {0} was not found in the database.  Check your spelling and make sure that's the table you wanted.", tableName);
            }
            string internalNameField = GetNameField(nameField, tableSchema);
            if (String.IsNullOrEmpty(internalNameField))
            {
                return null;
            }

            string internalValueField = GetValueField(valueField, tableSchema);
            if (String.IsNullOrEmpty(internalValueField))
            {
                return null;
            }

            var data = _dbProvider.GetTableEnumData(tableName, internalNameField, internalValueField);
            if (data.Count == 0)
            {
                return null;
            }
            var @enum = new EnumDeclaration(_nameProvider.GetEnumName(tableName));
            foreach (var kvp in data)
            {
                var field = @enum.AddField(_nameProvider.GetEnumFieldName(kvp.Key), kvp.Value);
                field.AddComment("{0} has the value of {1}", field.Name, kvp.Value);
            }
            return @enum;
        }