2

我已经向一个类添加了一些属性和局部变量,并希望使用 XSLT 将对象解析为 XML/HTML 文件。

现在这是奇怪的事情:当我有这个时:

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有效而第一个无效..?

4

1 回答 1

1

简单的答案是你需要一个二传手。

编辑2:二传手的原因

XML 序列化是否需要读取/写入属性?

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

结束编辑 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 运行并返回您的增值税值。

编辑
一个建议可能是允许集合传入以shopVATGET. 众所周知,这可能会改变

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;
    }
}
于 2011-03-11T14:00:57.313 回答