C# Property generator
January 28, 2011 Leave a comment
When creating C# properties, usually it is a good idea to declare members to each property and declare them private, to help control the state of the class internally.
Often creating these members and properties can be a tedious process. The following class generates a simple set of Properties from a file which contains a set of members. It also creates a simple comment above the properties to help make our code meet coding design standards.
/// <summary> /// Utility class for generating C# Properties. /// </summary> public class PropertyGenerator { /// <summary> /// Generates C# Properties based on member declarations. /// Removes preceeding underscores and properises property names. /// </summary> public static string GetPropertiesForMembers(string[] members) { StringBuilder properties = new StringBuilder(); foreach(string member in members) { // Remove semi-colon. string[] parts = member.Replace(';', ' ').Trim().Split(' '); // Scope (private, protected etc) string memberScope = parts[0]; // Type (class, simple type) string memberType = parts[1]; // Name of member. string memberName = parts[2]; // Begin by setting our property name to the member name. string propertyName = memberName; // Remove first underscore if exists. if (propertyName.StartsWith("_")) { propertyName = propertyName.Substring(1); } // Properise property name by making the first letter capital. propertyName = propertyName[0].ToString().ToUpper() + propertyName.Substring(1); // Generate the property string and add to the StringBuilder. AddProperty(memberType, propertyName, memberName, properties); } // Return the string in the StringBuilder. return properties.ToString(); } /// <summary> /// Helper method (blueprint) to generate a property from a member. /// </summary> /// <param name="propertyType"></param> /// <param name="propertyName"></param> /// <param name="memberName"></param> /// <param name="properties"></param> private static void AddProperty(string propertyType, string propertyName, string memberName, StringBuilder properties) { properties.AppendFormat("/// <summary>\n/// Gets or sets {1}\n/// </summary>\n[DataMember()]\npublic {0} {1}\n{{\n\tget\n\t{{\n\t\treturn {2};\n\t}}\n\tset\n\t{{\n\t\t{2} = value;\n\t\tSetEntityStateChanged(\"{1}\");\n\t}}\n}}\n\n", propertyType, propertyName, memberName); } }
( http://staugustine.org.au )
( http://www.staugustine.org.au )