I have method that assign value to property and generate code statement using C# CodeDOM.
private static CodeAssignStatement setProp(string propName, object propValue, Type propType, Type objType)
{
CodeAssignStatement declareVariableName = null;
if (propType.IsPrimitive)
{
declareVariableName = new CodeAssignStatement(
new CodePropertyReferenceExpression(new CodeVariableReferenceExpression("testObj"), propName), new CodePrimitiveExpression(propValue)
);
}
else
{
declareVariableName = new CodeAssignStatement(
new CodePropertyReferenceExpression(new CodeVariableReferenceExpression("testObj"), propName),
new CodeVariableReferenceExpression("\"" + propValue?.ToString() + "\"")
);
}
return declareVariableName;
}
For primitive value it is generating statements correctly. However, for rest, e.g. DateTime it generates statement like testObj.PurchasedOn = "17-09-2016 18:50:00";. One way to use target data type "Parse" methods. But it may not be available for other data types. How can I construct object? Is there any method available in framework?