dotSITE
Work in Murano Software. Вопросы/Ответы Учебник по ASP.NET
новости материалы решения форумы группы настройки/о проекте

Автор: Anonymous
Тема: RE: Complex object serialization
Дата: 8/22/2005 1:53:00 AM
>Вопрос: Как сериализовать класс, который имплементирует интерфейсы: IEnumerable, IEnumerator ?
>
>При сериализации вылетает следующее:
>
>Error:
>An unhandled exception of type 'System.InvalidOperationException' occurred in system.xml.dll
>Additional information: You must implement the Add(System.Object) method on MySerialization.MyNamespace.GridColumns because it inherits from IEnumerable.
>
>Но ведь в интерфейсе IEnumerable нет метода Add(System.Object) !!!
>
>
>
>Код:
>
>Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
>
>Dim tGrid As New MyNamespace.MyGrid()
>
>tGrid.Name = "GridName"
>
>tGrid.Caption = "GridCaption"
>
>tGrid.Columns.Attribute1 = "a111"
>
>tGrid.Columns.Attribute2 = "a222"
>
>tGrid.Columns.Attribute3 = "a333"
>
>Dim tColumn As MyNamespace.GridColumn
>
>tColumn = New MyNamespace.GridColumn()
>
>tColumn.ColumnID = 1
>
>tColumn.ColumnCaption = "First"
>
>tGrid.Columns.Add(tColumn)
>
>tColumn = New MyNamespace.GridColumn()
>
>tColumn.ColumnID = 2
>
>tColumn.ColumnCaption = "Second"
>
>tGrid.Columns.Add(tColumn)
>
>tColumn = New MyNamespace.GridColumn()
>
>tColumn.ColumnID = 3
>
>tColumn.ColumnCaption = "Third"
>
>tGrid.Columns.Add(tColumn)
>
>
>
>Dim tExtraTypes(1) As Type
>
>tExtraTypes(0) = GetType(MyNamespace.GridColumn)
>
>tExtraTypes(1) = GetType(MyNamespace.GridColumns)
>
>Dim xs As System.Xml.Serialization.XmlSerializer
>
>xs = New System.Xml.Serialization.XmlSerializer(tGrid.GetType, tExtraTypes) ' Error raised here.............
>
>
>
>End Sub
>
>
>
>
>
>
>
>
>
>Namespace MyNamespace
>
>Public Class MyGrid
>
>Public Name As String
>
>Public Caption As String
>
>Public Columns As GridColumns
>
>Public Sub New()
>
>Columns = New GridColumns()
>
>End Sub
>
>Protected Overrides Sub Finalize()
>
>Columns = Nothing
>
>End Sub
>
>End Class
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>Public Class GridColumns
>
>Implements IEnumerable, IEnumerator
>
>
>
>Public Attribute1 As String
>
>Public Attribute2 As String
>
>Public Attribute3 As String
>
>Private pColumns As Collection
>
>Private tCurrent As Integer
>
>ReadOnly Property Count()
>
>Get
>
>Count = pColumns.Count
>
>End Get
>
>End Property
>
>Public ReadOnly Property Current() As Object Implements System.Collections.IEnumerator.Current
>
>Get
>
>Return pColumns(tCurrent)
>
>End Get
>
>End Property
>
>Public Function MoveNext() As Boolean Implements System.Collections.IEnumerator.MoveNext
>
>If tCurrent < Me.Count Then
>
>tCurrent = tCurrent + 1
>
>End If
>
>End Function
>
>Public Sub Reset() Implements System.Collections.IEnumerator.Reset
>
>tCurrent = 0
>
>End Sub
>
>Public Sub New()
>
>pColumns = New Collection()
>
>End Sub
>
>Protected Overrides Sub Finalize()
>
>pColumns = Nothing
>
>MyBase.Finalize()
>
>End Sub
>
>Default ReadOnly Property Item(ByVal rID As String) As GridColumn
>
>Get
>
>Return pColumns(rID)
>
>End Get
>
>End Property
>
>Public Function Add(ByRef rItem As GridColumn) As Boolean
>
>pColumns.Add(rItem, rItem.ColumnID)
>
>End Function
>
>Public Function GetEnumerator() As System.Collections.IEnumerator Implements System.Collections.IEnumerable.GetEnumerator
>
>Return pColumns.GetEnumerator()
>
>End Function
>
>End Class
>
>
>
>
>
>
>
>
>
>
>
>
>
>Public Class GridColumn
>
>Public ColumnID As Integer
>
>Public ColumnCaption As String
>
>Public Sub New()
>
>End Sub
>
>End Class
>
>End Namespace
>
>
>
>
>
>Any suggestions ?





 VB.NET -- Программирование на VB.NET
 Complex object serialization Руслан    1/17/2002 10:50:00 AM
 RE: Complex object serialization Anonymous    8/22/2005 1:53:00 AM


Контакт Реклама на сайте Спонсорам Веб мастерам

Лицензионное соглашение - © 2000-2012 dotSITE
Хостинг .NET предоставлен PARKING.RU
Поддержку сайта осуществляет Murano Software Inc., Offshore software development