'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 |