2011-03-11 66 views
2

我已經添加了一些屬性和局部變量到一個類,並希望用XSLT解析對象到一個XML/HTML文件。XslCompiledTransform與對象和XSLT

現在這裏是奇怪的事情: 時,我有這樣的:

private double _invoicePrice = 0; 

[XmlAttribute("invoicePrice")] 
public double InvoicePrice{ 
    get { return _invoicePrice; } 
    set { _invoicePrice = value; } 
} 

[XmlAttribute("vat")] 
public double Vat 
{ 
    get 
    { 
     return 4; 

     /* // also tried this... 
     double shopVat = 19; 
     double vat = (_invoicePrice/(shopVat + 100)) * shopVat; 
     return Math.Round(vat, 2); 
     */ 
    } 
} 

解析不工作

,當我有這樣的:

private double _invoicePrice = 0; 
private double _vat = 0; 

[XmlAttribute("invoicePrice")] 
public double InvoicePrice{ 
    get { return _invoicePrice; } 
    set { _invoicePrice = value; } 
} 

[XmlAttribute("vat")] 
public double Vat 
{ 
    get { return _vat; } 
    set { _vat = value; } 
} 

改造作品

屬性Vat調試時總是有一個值!與兩個選項。但不知何故XslCompiledTransform需要私有變量或沒有隻讀或東西?

有人可以解釋爲什麼選項2的作品,而第一個不.. ..?

回答

1

簡單的答案是你需要一個setter。

編輯2:原因二傳手

Does XML Serialization Require Properties to be Read/Write?

http://msdn.microsoft.com/en-us/library/182eeyhh%28VS.85%29.aspx

END EDIT 2

現在,如果你嘗試:

private double _invoicePrice = 0; 

[XmlAttribute("invoicePrice")] 
public double InvoicePrice{ 
    get { return _invoicePrice; } 
    set { _invoicePrice = value; } 
} 

[XmlAttribute("vat")] 
public double Vat 
{ 
    get 
    { 
     double shopVat = 19; 
     double vat = (_invoicePrice/(shopVat + 100)) * shopVat; 
     return Math.Round(vat, 2); 
    } 
    set 
    { 
    } 
} 

二傳手是我真正改變的唯一一點。

您不需要將值設置爲任何值,但它確實允許get運行並返回您的增值稅。

編輯
的建議可能是允許的設置爲在shopVAT通過在GET使用。正如我們都知道這可以改變

private double _invoicePrice = 0; 
private double _shopVat = 0; 

[XmlAttribute("invoicePrice")] 
public double InvoicePrice{ 
    get { return _invoicePrice; } 
    set { _invoicePrice = value; } 
} 

[XmlAttribute("vat")] 
public double Vat 
{ 
    get 
    { 
     //double shopVat = 19; 
     double vat = (_invoicePrice/(_shopVat + 100)) * _shopVat; 
     return Math.Round(vat, 2); 
    } 
    set 
    { 
     _shopVat = value; 
    } 
} 
+0

爲什麼你需要一個setter? – 2011-03-11 15:38:25

+0

還不確定,仍然試圖找出... – 2011-03-11 15:44:56

+0

如果你使用該集合來傳遞增值,它應該真的很重要;) – 2011-03-11 15:46:02