Я хочу сериализовать & десериализовать объект (этот объект имеет ссылку) с помощью BinaryFormatter.Как сериализовать и десериализовать статический объект ссылки?
Я ожидал, что «DeserializedObject.Equals (A.Empty)» будет таким же, как ниже кода. но, результат другой.
для того, чтобы «DeserializedObject == A.Empty», как использовать сериализацию/десериализацию?
[Serializable]
public class A
{
private string ID = null;
private string Name = null;
public A()
{ }
public static A Empty = new A()
{
ID = "Empty",
Name = "Empty"
};
}
class Program
{
static void Main(string[] args)
{
A refObject = A.Empty; // Add reference with static object(Empty)
A DeserializedObject;
//Test
//before serialization, refObject and A.Empty is Same!!
if(refObject.Equals(A.Empty))
{
Console.WriteLine("refObject and A.Empty is the same ");
}
//serialization
using (Stream stream = File.Create("C:\\Users\\admin\\Desktop\\test.mbf"))
{
BinaryFormatter bin = new BinaryFormatter();
bin.Serialize(stream, refObject);
}
//Deserialization
using (Stream stream = File.Open("C:\\Users\\admin\\Desktop\\test.mbf", FileMode.Open))
{
BinaryFormatter bin = new BinaryFormatter();
DeserializedObject = (A)bin.Deserialize(stream);
}
//compare DeserializedObject and A.Empty again.
//After deserialization, DeserializedObject and A.Empty is Different!!
if (DeserializedObject.Equals(A.Empty))
{
Console.WriteLine("Same");
}
else
Console.WriteLine("Different");
}
}
ли Вы хотите сохранить * все * ссылку на экземпляры класса 'Ā' когда сериализованные/десериализованными, или просто ссылки на' A.Empty' ? – dbc