C# オブジェクトの保存と復元: シリアル化と逆シリアル化
シリアル化ではデータをポータブル形式で保存するため、異なるアプリケーション、システム、マシン間でのオブジェクトの転送が容易になります。
オブジェクトをシリアル化するには、[Serializable]
属性タグを使用し、パラメーターなしのコンストラクターを含める必要があります。 さらに、[XmlIgnore]
および [JsonIgnore]
属性を使用して、特定の属性またはフィールドを除外することができます。
例
次の SomeClass
について考えてみましょう:
<code class="language-csharp">[Serializable] public class SomeClass { public string someProperty { get; set; } } SomeClass object1 = new SomeClass { someProperty = "someString" };</code>
ファイルに保存
バイナリシリアル化:
<code class="language-csharp"> BinaryFormatter binaryFormatter = new BinaryFormatter(); using (Stream stream = File.Create("object1.bin")) { binaryFormatter.Serialize(stream, object1); }</code>
XML シリアル化:
<code class="language-csharp"> XmlSerializer serializer = new XmlSerializer(typeof(SomeClass)); using (TextWriter writer = new StreamWriter("object1.xml")) { serializer.Serialize(writer, object1); }</code>
JSON シリアル化:
<code class="language-csharp"> using (StreamWriter writer = new StreamWriter("object1.json")) { writer.Write(JsonConvert.SerializeObject(object1)); }</code>
ファイルから復元
バイナリ逆シリアル化:
<code class="language-csharp"> BinaryFormatter binaryFormatter = new BinaryFormatter(); using (Stream stream = File.OpenRead("object1.bin")) { object1 = (SomeClass)binaryFormatter.Deserialize(stream); }</code>
XML デシリアライゼーション:
<code class="language-csharp"> XmlSerializer serializer = new XmlSerializer(typeof(SomeClass)); using (TextReader reader = new StreamReader("object1.xml")) { object1 = (SomeClass)serializer.Deserialize(reader); }</code>
JSON デシリアライゼーション (JsonDeserialization):
<code class="language-csharp"> using (StreamReader reader = new StreamReader("object1.json")) { object1 = JsonConvert.DeserializeObject<SomeClass>(reader.ReadToEnd()); }</code>
以上がC# でオブジェクトをシリアル化および逆シリアル化する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。