'How to add a property to an existing class programmatically?
I want to add another property public int ID { get; set; } to the class below using C#.
I don't know if there is a way beside T4 or partial class. How about CodeDom? I'm not familiar with it. Please do me a favor, Thanks!
public class DgItem
{
    public string Name { get; set; } 
}
Solution 1:[1]
You create a field for your property
CodeMemberField cmf = new CodeMemberField(new CodeTypeReference(type), name);
cmf.Attributes = attr;
cmf.InitExpression = new CodePrimitiveExpression(value);
You create your property
CodeMemberProperty cmp = new CodeMemberProperty()
   {
   Name = name,
   Type = new CodeTypeReference(type),
   Attributes = attr,
   };
Then add the get and set statements
cmp.GetStatements.Add(new CodeMethodReturnStatement(new CodePropertyReferenceExpression(new CodeThisReferenceExpression(), field.Name)));
cmp.SetStatements.Add(new CodeAssignStatement(new CodePropertyReferenceExpression(new CodeThisReferenceExpression(), field.Name), new CodePropertySetValueReferenceExpression()));
And that should do the trick
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source | 
|---|---|
| Solution 1 | philippe | 
