Украшение сериализуемого класса с дополнительными свойствами - PullRequest
1 голос
/ 15 марта 2011

Я создаю приложение для Windows Phone 7 и пытаюсь украсить сгенерированный класс дополнительным свойством для привязки, но я немного озадачен тем, как решить эту проблему архитектурно. В настоящее время у меня есть этот класс, который создается с помощью инструмента xsd.exe из файла XML:

[System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.0.30319.1")]
[System.Diagnostics.DebuggerStepThroughAttribute]
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true)]
public class Session
{
    [System.Xml.Serialization.XmlElementAttribute(Form = System.Xml.Schema.XmlSchemaForm.Unqualified)]
    public string Abstract { get; set; }

    [System.Xml.Serialization.XmlElementAttribute(Form = System.Xml.Schema.XmlSchemaForm.Unqualified)]
    public string Speaker { get; set; }

    [System.Xml.Serialization.XmlAttributeAttribute]
    public string TimeslotBegin { get; set; }

    [System.Xml.Serialization.XmlAttributeAttribute]
    public string Location { get; set; }

    [System.Xml.Serialization.XmlAttributeAttribute]
    public string TimeslotEnd { get; set; }

    [System.Xml.Serialization.XmlAttributeAttribute]
    public string Title { get; set; }
}

Я извлекаю XML из Интернета и десериализую его с помощью XmlSerializer, но я хочу добавить дополнительное свойство, чтобы позволить пользователю «помечать» элементы в пользовательском интерфейсе. Я хочу иметь возможность привязки к этому свойству, поэтому оно должно уведомлять поток пользовательского интерфейса при изменении.

Есть идеи, как это решить?

1 Ответ

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

В этой ситуации я бы рекомендовал вам отделить вашу Модель от вашей ViewModel.

ViewModel - это представление данных (включая привязываемые свойства), специально разработанное для вашего пользовательского интерфейса.

Модельэто «чистое» представление данных, специально разработанное для моделирования вашего домена и для персистентности (либо напрямую в IsolatedStorage, либо, возможно, сохраняемое через веб-сервис)

Итак, я рекомендую вам создать несколько классов ViewModel для вашего пользовательского интерфейсапривязать к - и затем выяснить, как эти ViewModel взаимодействуют с моделью.


Кроме того, я бы также с осторожностью отнесся к использованию сгенерированных XSD классов в Windows Phone 7 - WP7, кажется, предпочитаетклассы XDocument Linq XML, а не классы XmlDocument XML (но я могу ошибаться!)

...