1

我目前正在处理一些现有的 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与它无关。


关于这个话题:

那么,既然我找到了解决方案,我该如何接受答案呢?还是我需要关闭这个话题?

4

1 回答 1

0

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

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与它无关。

于 2013-08-29T12:10:53.133 回答