none
Можно ли сохранить в My.Settings экземпляр объекта типа Version? RRS feed

  • Вопрос

  • Здравствуйте,

    подскажите, можно ли в My.Settings сохранить экземпляр объекта типа Version? Я объявил переменную типа Version в настройках проекта, пока ничего в неё не сохранял, при чтении значения переменной оно было Nothing, после того как я сохранил в неё значение переменной и вызвал метод Save, при попытке её прочесть получаю все нули для свойств Major, Minor, Build. Что я делаю не так?

    8 июля 2021 г. 13:48

Ответы

  • Imports System.IO
    Imports System.Runtime.Serialization.Formatters.Binary
    
    Module Module1
    
        Sub Main()
            Dim _version As New Version("9.0.13")
    
            Console.WriteLine(_version.ToString())
            SaveObject(_version)
            Console.WriteLine(LoadObject())
            Console.ReadLine()
        End Sub
    
        Private Sub SaveObject(ByVal obj As Version)
            Dim _bf As BinaryFormatter
            Dim _buffer As Byte()
    
            Using _ms As New MemoryStream
                _bf = New BinaryFormatter
                _bf.Serialize(_ms, obj)
                _ms.Position = 0
                _buffer = Array.CreateInstance(GetType(Byte), _ms.Length)
                _ms.Read(_buffer, 0, _buffer.Length)
                My.Settings.AppVersion = Convert.ToBase64String(_buffer)
                My.Settings.Save()
            End Using
        End Sub
    
        Public Function LoadObject()
            Dim _bf As BinaryFormatter
    
            Using _ms As New MemoryStream(Convert.FromBase64String(My.Settings.AppVersion))
                _bf = New BinaryFormatter
                Return CType(_bf.Deserialize(_ms), Version)
            End Using
        End Function
    End Module
    Вот такое вот решение
    • Помечено в качестве ответа SergejS 9 июля 2021 г. 8:26

Все ответы

  • Привет,

    Попробуйте решения описанные внизу:

    How to save settings made in VB?

    How to store a list of objects in application settings


    Мнения, высказанные здесь, являются отражением моих личных взглядов, а не позиции корпорации Microsoft. Вся информация предоставляется "как есть" без каких-либо гарантий. Не забывайте помечать сообщения как ответы и полезные, если они Вам помогли.

    8 июля 2021 г. 14:51
  • Насколько я уловил идею, она заключается в том чтобы объявить переменную, как String в Settings, затем сериализовать объект в строку и сохранить эту строку в Settings, а при чтении, десериализовать и преобразовать в объект?
    8 июля 2021 г. 16:35
  • Imports System.IO
    Imports System.Runtime.Serialization.Formatters.Binary
    
    Module Module1
    
        Sub Main()
            Dim _version As New Version("9.0.13")
    
            Console.WriteLine(_version.ToString())
            SaveObject(_version)
            Console.WriteLine(LoadObject())
            Console.ReadLine()
        End Sub
    
        Private Sub SaveObject(ByVal obj As Version)
            Dim _bf As BinaryFormatter
            Dim _buffer As Byte()
    
            Using _ms As New MemoryStream
                _bf = New BinaryFormatter
                _bf.Serialize(_ms, obj)
                _ms.Position = 0
                _buffer = Array.CreateInstance(GetType(Byte), _ms.Length)
                _ms.Read(_buffer, 0, _buffer.Length)
                My.Settings.AppVersion = Convert.ToBase64String(_buffer)
                My.Settings.Save()
            End Using
        End Sub
    
        Public Function LoadObject()
            Dim _bf As BinaryFormatter
    
            Using _ms As New MemoryStream(Convert.FromBase64String(My.Settings.AppVersion))
                _bf = New BinaryFormatter
                Return CType(_bf.Deserialize(_ms), Version)
            End Using
        End Function
    End Module
    Вот такое вот решение
    • Помечено в качестве ответа SergejS 9 июля 2021 г. 8:26