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

Тема в разделе ".NET", создана пользователем svfolder, 21 апр 2014.

  1. svfolder

    svfolder Постоялец

    Регистр.:
    31 июл 2013
    Сообщения:
    97
    Симпатии:
    39
    День добрый уважаемые форумчане!

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

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

    VB 2008

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

    artcosmic

    Регистр.:
    16 сен 2008
    Сообщения:
    198
    Симпатии:
    161
    Хорошо бы взглянуть на код, так с потолка трудно ответить.
     
  3. Шумадан

    Шумадан Хабарра!!11

    Регистр.:
    6 фев 2008
    Сообщения:
    1.728
    Симпатии:
    2.105
    вы случайно не про паблик свойства? Перейти по ссылке

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

    svfolder Постоялец

    Регистр.:
    31 июл 2013
    Сообщения:
    97
    Симпатии:
    39
    Насколько я понимаю так можно указывать паблик свойствам своего контрола, которые сам создаешь, а как проигнорировать все свойства которые сразу поумолчанию есть у юзерконтрола? перегружать их все и прописывать этот атрибут?
     
    Шумадан нравится это.
  5. Шумадан

    Шумадан Хабарра!!11

    Регистр.:
    6 фев 2008
    Сообщения:
    1.728
    Симпатии:
    2.105
    ну как вариант - писать кастомную сериализацию для своего контрола
     
    SilverGhost нравится это.
  6. svfolder

    svfolder Постоялец

    Регистр.:
    31 июл 2013
    Сообщения:
    97
    Симпатии:
    39
    Как это можно сделать на 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
    
    
    
     
  7. DimaU

    DimaU Постоялец

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