C# 更改虚拟财产
我目前正在处理一些现有的C代码,我只想在系统中不存在给定代码时将属性设置为null 我当前拥有的代码如下所示:C# 更改虚拟财产,c#,.net,C#,.net,我目前正在处理一些现有的C代码,我只想在系统中不存在给定代码时将属性设置为null 我当前拥有的代码如下所示: if (!CodeExists(SomeClass.Code)) { SomeClass.Code = null; } public ViewValue<SomeClassProjection> SomeClassState; public ViewValue<SomeClassProjection> SomeClassState; 所以假设Som
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}。您确定看到的是正确的对象吗?如前所述,虚拟不是问题。我会检查是否还有其他地方设置了代码。