C# 更改虚拟财产

C# 更改虚拟财产,c#,.net,C#,.net,我目前正在处理一些现有的C代码,我只想在系统中不存在给定代码时将属性设置为null 我当前拥有的代码如下所示: if (!CodeExists(SomeClass.Code)) { SomeClass.Code = null; } public ViewValue<SomeClassProjection> SomeClassState; public ViewValue<SomeClassProjection> SomeClassState; 所以假设Som

我目前正在处理一些现有的C代码,我只想在系统中不存在给定代码时将属性设置为null

我当前拥有的代码如下所示:

if (!CodeExists(SomeClass.Code))
{
    SomeClass.Code = null;
}
public ViewValue<SomeClassProjection> SomeClassState;
public ViewValue<SomeClassProjection> SomeClassState;
所以假设SomeClass.Code以值100开始。然后检查该代码是否与方法CodeExists一起存在。如果找不到代码,它应该设置SomeClass.code=null

但是,当我使用调试器逐步完成这段代码时,我看到SomeClass.code根本不会更改,即使调试器出现在if语句中

当我查看属性代码时,我看到它被声明为虚拟:

这是否意味着我不能简单地更改声明为虚拟的值?我能做些什么来改变代码的值吗


似乎代码的另一部分是问题:

public SomeClassProjection SomeClass
{
    get
    {
        // some stuff is done here
        SomeClassState.Value = queryProcessor
                    .Execute(new ExistingProductsQuery { OrderNumber = SelectedOrderNumber });

        return SomeClassState.Value;
    }
}
public SomeClassProjection SomeClass
{
    get
    {
        // some stuff is done here
        SomeClassState.Value = queryProcessor
                    .Execute(new ExistingProductsQuery { OrderNumber = SelectedOrderNumber });

        return SomeClassState.Value;
    }
}
所以返回SomeClassState。定义如下:

if (!CodeExists(SomeClass.Code))
{
    SomeClass.Code = null;
}
public ViewValue<SomeClassProjection> SomeClassState;
public ViewValue<SomeClassProjection> SomeClassState;
所以它确实使用了另一个类,就像你们中的一些人建议的那样。ViewValue清楚地表明它是现成的。这意味着我必须采取另一种方法,但至少我现在知道,实际上是什么阻止了我编辑该属性,而虚拟与之无关

关于此主题:


那么,既然我找到了解决方案,我该如何接受答案呢?或者我需要关闭此主题吗?

代码的其他部分似乎是问题所在:

public SomeClassProjection SomeClass
{
    get
    {
        // some stuff is done here
        SomeClassState.Value = queryProcessor
                    .Execute(new ExistingProductsQuery { OrderNumber = SelectedOrderNumber });

        return SomeClassState.Value;
    }
}
public SomeClassProjection SomeClass
{
    get
    {
        // some stuff is done here
        SomeClassState.Value = queryProcessor
                    .Execute(new ExistingProductsQuery { OrderNumber = SelectedOrderNumber });

        return SomeClassState.Value;
    }
}
所以返回SomeClassState。定义如下:

if (!CodeExists(SomeClass.Code))
{
    SomeClass.Code = null;
}
public ViewValue<SomeClassProjection> SomeClassState;
public ViewValue<SomeClassProjection> SomeClassState;

所以它确实使用了另一个类,就像你们中的一些人建议的那样。ViewValue清楚地表明它是现成的。这意味着我必须采取另一种方法,但至少我现在知道实际上是什么阻止我编辑该属性,而虚拟与此无关。

不是原因。虚拟只是意味着它可以被覆盖。可能就是这样。您必须验证是否确实有SomeClass类型的对象或继承器。另一个问题是,代码是什么类型的?类或值类型?@oddparity-codernumber被定义为公共类。而SomeClass似乎真的属于SomeClass类型。在调试器中,当我将光标停留在对象上时,它会显示:SomeClass{CompanyName.Path.Projections.SomeClass}。您确定看到的是正确的对象吗?如前所述,虚拟不是问题。我会检查是否还有其他地方设置了代码。