今天我在使用一个结构体时遇到了一个问题,让我措手不及,希望有人能为我解惑。
我定义了一个结构体,就像这样:
public struct PaymentDetail
{
public Decimal Amount{get;set;}
public string CheckNumber{get;set;}
public PaymentType PaymentType{get;set;}
}
我有一个包含以下信息的类
public class Transaction
{
public PaymentDetail Payment{get;}
}
我有一个呈现模型,我想设置其中的底层属性,如下所示。
public class ViewModel
{
public Decimal Amount
{
get{return _Transaction.PaymentDetail.Amount;}
set
{
//This is the offending line of code
_Transaction.PaymentDetail.Amount = value;
RaisePropertyChanged("Amount");
}
}
}
“很奇怪的是,如果我将Payment属性改成公共字段,就可以让它正常工作,代码如下:”
public class Transaction
{
public PaymentDetail Payment;
}
显然,我对结构体还有一些不理解,这导致了问题的出现。这是一个不好的想法吗?有更好的方法吗?我做错了什么?
PaymentDetail- 它会在你眨眼的时候克隆自己! - Marc Gravell