假设,我有以下简化类型:
public class Model
{
public decimal? Result { get; set; }
}
如何使用 CodeDOM 表示空合并运算符以生成 C# 代码,这可能吗?现在我正在使用以下解决方法:
new CodePropertyReferenceExpression(
new CodePropertyReferenceExpression(modelArgument, "Result"),
"Value"))
等于model.Result.Value
,但不等于model.Result ?? 0M
更好的解决方法
CodeExpression
等于model.Result.GetValueOrDefault(0M)
适用于可空值类型
new CodeMethodInvokeExpression(
new CodeMethodReferenceExpression(
new CodePropertyReferenceExpression(modelArgument, "Result"),
"GetValueOrDefault"),
new [] { new CodePrimitiveExpression(0m) })),