本文整理汇总了C#中System.Runtime.Serialization.OnSerializedAttribute类的典型用法代码示例。如果您正苦于以下问题:C# OnSerializedAttribute类的具体用法?C# OnSerializedAttribute怎么用?C# OnSerializedAttribute使用的例子?那么, 这里精选的类代码示例或许可以为您提供帮助。
OnSerializedAttribute类属于System.Runtime.Serialization命名空间,在下文中一共展示了OnSerializedAttribute类的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: Main
//引入命名空间
using System;
using System.IO;
using System.Runtime.Serialization;
using System.Runtime.Serialization.Formatters.Binary;
public class Test
{
public static void Main()
{
// Create a new TestSimpleObject object.
TestSimpleObject obj = new TestSimpleObject();
Console.WriteLine("\n Before serialization the object contains: ");
obj.Print();
// Open a file and serialize the object into binary format.
Stream stream = File.Open("DataFile.dat", FileMode.Create);
BinaryFormatter formatter = new BinaryFormatter();
try
{
formatter.Serialize(stream, obj);
// Print the object again to see the effect of the
//OnSerializedAttribute.
Console.WriteLine("\n After serialization the object contains: ");
obj.Print();
// Set the original variable to null.
obj = null;
stream.Close();
// Open the file "DataFile.dat" and deserialize the object from it.
stream = File.Open("DataFile.dat", FileMode.Open);
// Deserialize the object from the data file.
obj = (TestSimpleObject)formatter.Deserialize(stream);
Console.WriteLine("\n After deserialization the object contains: ");
obj.Print();
Console.ReadLine();
}
catch (SerializationException se)
{
Console.WriteLine("Failed to serialize. Reason: " + se.Message);
throw;
}
catch (Exception exc)
{
Console.WriteLine("An exception occurred. Reason: " + exc.Message);
throw;
}
finally
{
stream.Close();
obj = null;
formatter = null;
}
}
}
// This is the object that will be serialized and deserialized.
[Serializable()]
public class TestSimpleObject
{
// This member is serialized and deserialized with no change.
public int member1;
// The value of this field is set and reset during and
// after serialization.
private string member2;
// This field is not serialized. The OnDeserializedAttribute
// is used to set the member value after serialization.
[NonSerialized()]
public string member3;
// This field is set to null, but populated after deserialization.
private string member4;
// Constructor for the class.
public TestSimpleObject()
{
member1 = 11;
member2 = "Hello World!";
member3 = "This is a nonserialized value";
member4 = null;
}
public void Print()
{
Console.WriteLine("member1 = '{0}'", member1);
Console.WriteLine("member2 = '{0}'", member2);
Console.WriteLine("member3 = '{0}'", member3);
Console.WriteLine("member4 = '{0}'", member4);
}
[OnSerializing()]
internal void OnSerializingMethod(StreamingContext context)
{
member2 = "This value went into the data file during serialization.";
}
[OnSerialized()]
internal void OnSerializedMethod(StreamingContext context)
{
member2 = "This value was reset after serialization.";
}
[OnDeserializing()]
internal void OnDeserializingMethod(StreamingContext context)
{
member3 = "This value was set during deserialization";
}
[OnDeserialized()]
internal void OnDeserializedMethod(StreamingContext context)
{
member4 = "This value was set after deserialization.";
}
}
// Output:
// Before serialization the object contains:
// member1 = '11'
// member2 = 'Hello World!'
// member3 = 'This is a nonserialized value'
// member4 = ''
//
// After serialization the object contains:
// member1 = '11'
// member2 = 'This value was reset after serialization.'
// member3 = 'This is a nonserialized value'
// member4 = ''
//
// After deserialization the object contains:
// member1 = '11'
// member2 = 'This value went into the data file during serialization.'
// member3 = 'This value was set during deserialization'
// member4 = 'This value was set after deserialization.'
示例2: SetValuesOnSerialized
[OnSerialized]
private void SetValuesOnSerialized(StreamingContext context)
{
// Code not shown.
}