意外と気づかないポイントだったりするよ
みなさん、こんにちは!
先日、友人の家に行ったら、ペットの犬がちゃんと決められた場所でトイレをしていたのです。
それで感心して「すごいね」って言おうとしたけど、 「よく考えたら、僕もちゃんとトイレでしてるな」と思って言うのを止めたあらたまです。
C#でXMLシリアライズをしたときに、System.InvalidOperationExceptionが発生することがあります。
修正前のソースコード
シリアライズするソースコードはこんな感じです。
メイン関数
using System;
using System.Xml.Serialization;
using System.IO;
using System.Text;
namespace XmlSerializeTest
{
class Program
{
static void Main(string[] args)
{
// シリアライズしたいクラス
Something something = new Something();
// シリアライザーの準備
XmlSerializer serializer = new XmlSerializer(typeof(Something));
StringBuilder sb = new StringBuilder();
StringWriter sw = new StringWriter(sb);
// Xmlシリアライズ
serializer.Serialize(sw, something);
// 結果を表示
Console.Write(sw.ToString());
Console.ReadLine();
}
}
}
シリアライズしたいクラス
using System;
using System.Collections.Generic;
using System.Text;
namespace XmlSerializeTest
{
class Something
{
public Something()
{
this.SomethingValue = 99;
}
public int SomethingValue
{
get;set;
}
}
}
とくに変わったところはないですね。これを実行するとこんな感じ。
シリアライザーを生成するときに、例外が発生していますね。
修正する
修正は簡単です。
シリアライズしたいクラスのクラス名の前に『public』を付けます。
これだけ。では、動かしてみましょう!