SOAP Серриализация usercontrol

svfolder

Постоялец
Регистрация
31 Июл 2013
Сообщения
159
Реакции
156
  • Автор темы
  • Заблокирован
  • #1
День добрый уважаемые форумчане!

Прошу помощи в решении вопроса.

Постоянно приходится работать с юзерконтролами, всмысле разрабатывать свои контролы, для своей програмки.
При этом требуется сохранять состояние контролов, вернее есть набор объектов, в том числе содержащий в себе массивы объектов, которые через присвоение свойств контролам, создают форму редактирования. После редактирования, состояние контролов сохраняется в отдельных классах и через SOAP серриализацию, пишутся в общее хранилище. Хотелось бы избавиться от одной прослойки в цепи сонтрол->класс->soap->file
и сразу серриализовать юзер контрол.
Но возникает вопрос, как это сделать, чтобы сохранялись только нужные свойства, а не все свойства коих очень много у любого контрола.

VB 2008

Заранее благодарен за любую помощь!
 

artcosmic

Постоялец
Регистрация
16 Сен 2008
Сообщения
198
Реакции
162
Хорошо бы взглянуть на код, так с потолка трудно ответить.
 

Шумадан

Хабарра!!11
Регистрация
6 Фев 2008
Сообщения
1.746
Реакции
2.208
вы случайно не про паблик свойства? Для просмотра ссылки Войди или Зарегистрируйся

вполне возможно нужно сделать кастомную сериализацию
 

svfolder

Постоялец
Регистрация
31 Июл 2013
Сообщения
159
Реакции
156
  • Автор темы
  • Заблокирован
  • #4
вы случайно не про паблик свойства? Для просмотра ссылки Войди или Зарегистрируйся

вполне возможно нужно сделать кастомную сериализацию

Насколько я понимаю так можно указывать паблик свойствам своего контрола, которые сам создаешь, а как проигнорировать все свойства которые сразу поумолчанию есть у юзерконтрола? перегружать их все и прописывать этот атрибут?
 

Шумадан

Хабарра!!11
Регистрация
6 Фев 2008
Сообщения
1.746
Реакции
2.208
Насколько я понимаю так можно указывать паблик свойствам своего контрола, которые сам создаешь, а как проигнорировать все свойства которые сразу поумолчанию есть у юзерконтрола? перегружать их все и прописывать этот атрибут?
ну как вариант - писать кастомную сериализацию для своего контрола
 

svfolder

Постоялец
Регистрация
31 Июл 2013
Сообщения
159
Реакции
156
  • Автор темы
  • Заблокирован
  • #6
ну как вариант - писать кастомную сериализацию для своего контрола
Как это можно сделать на VB 2008, примерчик бы для работы со стандартным System.Xml.Serialization

Вот пример конвертера в Json который потом сохраняется в конфиге проекта.


Код:
    '   Конвертит ExportConfig в JSON
    '#########################################################################
    Function ToJSON(ByRef dict As JoomlaComponentBuilder.ExportConfig) As String

        '-----------------------------
        '   Конвертим справочник в JSON
        '-----------------------------
        Dim stream1 As New MemoryStream()
        Dim ser As New DataContractJsonSerializer(GetType(JoomlaComponentBuilder.ExportConfig))
        ser.WriteObject(stream1, dict)
        stream1.Position = 0
        Dim sr As New StreamReader(stream1)
        Dim jsonOut As String = sr.ReadToEnd
        '-----------------------------

        Return jsonOut
    End Function



Вот пример класса который содержит в себе массив других объектов.
Который и серриализуется вышеуказанной функцией в json

Код:
Imports System.Xml.Serialization

Namespace JoomlaComponentBuilder

    Public Class ExportConfig

        Inherits Export

        <XmlArray("Views")> _
        <XmlArrayItem("ViewConfig")> _
        Public m_views As ViewConfig()

        Protected m_type As String = ""


        Sub New()

        End Sub

        Sub New(ByVal name As String)
            m_name = name
        End Sub


        '   ПУТЬ ЭКСПОРТА ДО ПРОЕКТА
        '#########################################################################
        Public Property ExportPath() As String
            Get
                Return _export_path
            End Get
            Set(ByVal value As String)
                _export_path = value
            End Set
        End Property

        '   Добавить вьюху
        '#########################################################################
        Public Function Add(ByVal value As ViewConfig) As Boolean

            ReDim Preserve m_views(m_index)
            m_views(m_index) = value
            m_index = m_index + 1

            Return True
        End Function

        Public Function Remove(ByVal key As Integer) As Boolean

            m_views.RemoveAt(key)
            m_index = m_index - 1

            Return True
        End Function

        '   Получить вьюху по ключу
        '#########################################################################
        Public Function getViewByKey(ByVal key As Integer) As ViewConfig
            Return m_views(key)
        End Function

        '   Задать вьюху по ключу
        '#########################################################################
        Public Function setViewByKey(ByVal key As Integer, ByVal value As ViewConfig) As Boolean

            If (m_views.Count - 1) >= key Then
                m_views(key) = value
            End If

        End Function

        '   Получить все вьюхи
        '#########################################################################
        Public Function getViews() As ViewConfig()
            Return m_views
        End Function

        Private _export_path As String


    End Class

End Namespace
 

DimaU

Постоялец
Регистрация
5 Июл 2012
Сообщения
129
Реакции
3
Вроде востребованное Вами видел на этом ресурсе:
Для просмотра ссылки Войди или Зарегистрируйся
Не смог найти, но тоже интересует удобная (чтоб меньше в классах описывать) сериализация...
 
Сверху