【发布时间】:2020-02-23 14:09:06
【问题描述】:
我有一个用于 PO 的抽象类。
public abstract class PO
{
public abstract Dictionary<string, object> InvalidFields { get; }
public abstract string PONumber { get; set; }
}
这由两种不同类型的 PO 继承:CPO 和 POR。
public class CPO
{
private string poNumber;
public override Dictionary<string, object> InvalidFields => new Dictionary<string, object>();
public override string PONumber
{
get
{
return poNumber;
}
set
{
if (!ValidatePONumber(value)) InvalidFields.Add("CPO Number", value);
poNumber = value;
}
}
}
当ValidatePONumber(value) 返回false 时,它会正确执行InvalidFields.Add(),但从未实际添加字典。在 Locals 窗口中,创建了一个名为 Namespace.PO.InvalidFields.get returned 的新变量,我可以看到添加的新键。但是,this.InvalidFields 没有值。
所以看起来抽象基类PO 中的字典被创建并添加到而不是派生类CPO。
【问题讨论】:
-
您在每次访问
InvalidFields时都会创建一个新的Dictionary<string, object> -
好的 - 所以
=>符号实际上只是充当get? -
是的,
prop => value;和prop { get { return value; } }一样