使用 CSharp CodeDom 获取完整的属性集语句
Using CSharp CodeDom for a full property set statement
使用 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 不是我需要的。我在文档中看不到它
C# 没有单独的值相等和引用相等运算符,只有 ==
。这意味着 IdentityInequality
将按照您想要的方式工作并生成 !=
.
您可以通过查看 the reference source of CSharpCodeProvider
来验证这一点。
使用 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 不是我需要的。我在文档中看不到它
C# 没有单独的值相等和引用相等运算符,只有 ==
。这意味着 IdentityInequality
将按照您想要的方式工作并生成 !=
.
您可以通过查看 the reference source of CSharpCodeProvider
来验证这一点。