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