Вот пример в vb.net
Я преобразовал его из некоторого c #, извините, если он не компилируется, но, надеюсь, поможет вам
Я также разместил код c #.
Если вам нужно сохранить сериализованный объект, я рекомендую использовать base64 для типа ntext, если вы используете ms sql .....
Мой пример сериализует весь объект this или me invb.net, однако иногда вам может потребоваться полный контроль, или вы можете столкнуться с проблемами с атрибутом безопасности, которые могут вызвать проблемы безопасности - если это так, вы можете сериализовать отдельные поля и удалить атрибут serialize.поэтому я включил код для сериализации отдельных полей - они закомментированы
Существует множество способов сериализации объектов в .NET, иногда атрибут Serialize может вызвать проблемы безопасности, тогда вам нужно сериализовать каждое поле.
Imports System.Linq
Imports System.Collections.Generic
Imports System.Runtime.Serialization
Imports System.Runtime.Serialization.Formatters.Binary
Imports System.IO
Namespace ConsoleApp
<Serializable> _
Public Class Example
Public Property S() As String
Get
Return m_S
End Get
Set
m_S = Value
End Set
End Property
Private m_S As String
Public Property I() As Integer
Get
Return m_I
End Get
Set
m_I = Value
End Set
End Property
Private m_I As Integer
Public Property List() As List(Of String)
Get
Return m_List
End Get
Set
m_List = Value
End Set
End Property
Private m_List As List(Of String)
Public Function Pack() As Byte()
Dim bf = New BinaryFormatter()
Using ms = New MemoryStream()
bf.Serialize(ms, Me)
' bf.Serialize(ms, S);
' bf.Serialize(ms, I);
' bf.Serialize(ms, List);
Return ms.ToArray()
End Using
End Function
Public Function UnPack(data As Byte()) As Example
Dim bf = New BinaryFormatter()
Using ms = New MemoryStream(data)
' S = (string) bf.Deserialize(ms);
' I = (int) bf.Deserialize(ms);
' List = (List<string>) bf.Deserialize(ms);
Return DirectCast(bf.Deserialize(ms), Example)
End Using
' return this;
End Function
Public Overrides Function ToString() As String
Return String.Format("[Example: S={0}, I={1}, List={2}]", S, I, [String].Join(",", List.ToArray()))
End Function
End Class
Class MainClass
Public Shared Sub Main(args As String())
Dim o1 = New Example() With { _
Key .S = "James", _
Key .I = 9, _
Key .List = New List(Of String)(New String() {"a", "b"}) _
}
Dim o2 = New Example().UnPack(o1.Pack())
Console.WriteLine(o1.ToString())
Console.WriteLine(o2.ToString())
Console.ReadLine()
End Sub
End Class
End Namespace
C # источник
using System;
using System.Linq;
using System.Collections.Generic;
using System.Runtime.Serialization;
using System.Runtime.Serialization.Formatters.Binary;
using System.IO;
namespace ConsoleApp
{
[Serializable()]
public class Example {
public string S {get;set;}
public int I {get;set;}
public List<string> List {get; set;}
public byte[] Pack() {
var bf = new BinaryFormatter();
using (var ms = new MemoryStream()) {
bf.Serialize(ms, this);
// bf.Serialize(ms, S);
// bf.Serialize(ms, I);
// bf.Serialize(ms, List);
return ms.ToArray();
}
}
public Example UnPack(byte[] data) {
var bf = new BinaryFormatter();
using (var ms = new MemoryStream(data)) {
return (Example) bf.Deserialize(ms);
// S = (string) bf.Deserialize(ms);
// I = (int) bf.Deserialize(ms);
// List = (List<string>) bf.Deserialize(ms);
}
// return this;
}
public override string ToString ()
{
return string.Format ("[Example: S={0}, I={1}, List={2}]", S, I, String.Join(",", List.ToArray()));
}
}
class MainClass
{
public static void Main (string[] args)
{
var o1 = new Example() {S = "James", I = 9, List= new List<string>(new string[] {"a", "b"})};
var o2 = new Example().UnPack(o1.Pack());
Console.WriteLine(o1.ToString());
Console.WriteLine(o2.ToString());
Console.ReadLine();
}
}
}