XslCompiledTransform с объектами и XSLT - PullRequest
2 голосов
/ 11 марта 2011

Я добавил некоторые свойства и локальные переменные в класс и хотел бы проанализировать объект с помощью 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 работает, а первый нет ..?

1 Ответ

1 голос
/ 11 марта 2011

Простой ответ: вам нужен сеттер.

РЕДАКТИРОВАТЬ 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 и вернуть значение Vat.

EDIT
может быть предложено разрешить передаче набора в этом 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;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...