使用CSharp CodeDom,我想生成以下代码:
set
{
if(_myproperty != value)
{
_myproperty = value;
}
}
我可以做以下但不是我想要的
cmp.SetStatements.Add(
new CodeConditionStatement(
//condition
new CodeBinaryOperatorExpression(
new CodeFieldReferenceExpression(new CodeThisReferenceExpression(),"_myproperty" ),
CodeBinaryOperatorType.ValueEquality,
new CodePropertySetValueReferenceExpression()),
//true statements
new CodeStatement[]{},
//False Statements
new CodeStatement[]{
new CodeAssignStatement(
new CodeFieldReferenceExpression(new CodeThisReferenceExpression(),"_myproperty"),
new CodePropertySetValueReferenceExpression()
)
})
);
上面会给我
set
{
if(_myproperty == value)
{
}
else
{
_myproperty = value;
}
}
问题是:如何使用CodeBinaryOperatorType枚举执行'!='或valueinequality操作,还是可以这样做?
我假设IdentityInequality不是我需要的。我在文档中看不到它
答案 0 :(得分:1)
C#没有单独的值相等和引用相等运算符,只有==
。这意味着IdentityInequality
将以您希望的方式运行并生成!=
。
您可以通过查看the reference source of CSharpCodeProvider
来验证这一点。