Сериализация PrinterSettings дает исключение - PullRequest
0 голосов
/ 18 июня 2010

Я пытаюсь сохранить PrinterSettings (VB.NET 3.5), но продолжаю получать исключения при чтении. Вот код, который я использую. Прекрасно работает на других типах объектов.

Я попытался заменить принтер по умолчанию на другой принтер, также использовал Microsoft XPS Document Writer.

Я прочитал, что в .NET 1.1 была проблема с сериализацией настроек принтера, но она была исправлена ​​в 2.0.

Я уверен, что это что-то глупое, что я делаю ...

Dim p = New Printing.PrinterSettings
    Dim L_PrintPageSettings = New System.Drawing.Printing.PageSettings
    p = L_PrintPageSettings.PrinterSettings
    Dim objStreamWriter As New StreamWriter("C:\Product.xml")
    Dim x As New XmlSerializer(p.GetType)
    x.Serialize(objStreamWriter, p)
    objStreamWriter.Close()
    Try
        'Deserialize text file to a new object.
        Dim objStreamReader As New StreamReader("C:\Product.xml")
        Dim p2 As New Printing.PrinterSettings
        p2 = x.Deserialize(objStreamReader)
        objStreamReader.Close()
    Catch ex As Exception

    End Try

1 Ответ

1 голос
/ 25 ноября 2010

Класс не IXmlSerializable. Попробуйте использовать тот факт, что он аннотирован атрибутом Serializable: http://msdn.microsoft.com/en-us/library/system.drawing.printing.printersettings(VS.71).aspx

Используйте BinaryFormatter, NetDataContractSerializer или DataContractSerializer (обратите внимание, что последний будет работать только в .NET 3.5 SP1).

Последний из них даст наиболее читабельный вывод, так что, вероятно, вам лучше использовать его.

См. Пример для DataContractSerializer внизу этой статьи:

http://msdn.microsoft.com/en-us/library/system.runtime.serialization.datacontractserializer.aspx

Поиск в Google покажет, как использовать BinaryFormatter или NetDataContractSerializer, если вы еще не знакомы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...