我目前正在处理一些现有的 C# 代码,我只是想将一个属性设置为null
系统中不存在给定代码的时间。
我目前拥有的代码如下所示:
if (!CodeExists(SomeClass.Code))
{
SomeClass.Code = null;
}
所以假设SomeClass.Code
以 的值开始100
。然后它使用方法检查它是否Code
存在CodeExists()
。如果它找不到它应该设置的代码SomeClass.Code = null
。
但是当我用调试器单步执行这段代码时,我发现它SomeClass.Code
根本没有改变,即使调试器进入了if
语句。
当我查看该属性时,Code
我看到它被声明为virtual
:
public virtual CodeNumber Code { get; set; }
这是否意味着当它被声明为时我不能简单地更改值virtual
?我能做些什么来改变这个值Code
吗?
似乎代码的其他部分是问题所在:
public SomeClassProjection SomeClass
{
get
{
// some stuff is done here
SomeClassState.Value = queryProcessor
.Execute(new ExistingProductsQuery { OrderNumber = SelectedOrderNumber });
return SomeClassState.Value;
}
}
所以SomeClassState
被退回。这是这样定义的:
public ViewValue<SomeClassProjection> SomeClassState;
所以它确实像你们中的一些人建议的那样使用另一个类。并ViewValue
清楚地告诉它是readyonly
。这意味着我必须采取另一种方法,但至少我现在知道实际上是什么阻止了我编辑该属性,而这virtual
与它无关。
关于这个话题:
那么,既然我找到了解决方案,我该如何接受答案呢?还是我需要关闭这个话题?