私はXMLファイルを読み書きするクラスを用意しています。 は今それの簡易版は、次のようになりますXElementがグローバルにnullの場合はチェックしてください
public class EstEIDPersoConfig
{
public bool LaunchDebugger { get ; set; }
public string Password { get; set; }
public int Slot { get; set; }
public string Reader { get; set; }
public string TestInput { get; set; }
public bool Logging { get; set; }
public EstEIDPersoConfig()
{
XElement xml = XElement.Load(myxml.xml);
XElement Configuration = xml.Element("Configuration");
LaunchDebugger = Convert.ToBoolean(Configuration.Element("LaunchDebugger").Value);
Password = Configuration.Element("Password").Value;
Slot = Convert.ToInt32(Configuration.Element("Slot").Value);
Reader = Configuration.Element("Reader").Value;
TestInput = Configuration.Element("TestInput").Value;
Logging = Convert.ToBoolean(Configuration.Element("Logging").Value);
}
}
そしてより後であるでしょう。その問題は、xmlにいくつかの要素が存在しない場合、私はSystem.NullReferenceException
となるということです。だから私は、要素がnull
かどうかを確認する必要があります。これを行うには1つの方法があります。
var value = Configuration.Element("LaunchDebugger").Value;
if (value != null)
LaunchDebugger = Convert.ToBoolean(value);
else
throw new Exception("LaunchDebugger element missing from xml!");
しかし、すべての要素でこれを行うのは、あまりにも多くなります。ですから、私はこのシステムを簡素化するための良いアイデアが必要なので、1000行のコードで終わることはありません。
EDIT:最後のコードスニペットを編集しました。アイデアはデフォルト値を設定していませんでした。アイデアはこの要素がxmlから欠落していることをユーザーに通知することでした。
xmlの値がnullの場合、適切なコンストラクターに、xmlの遅延初期化を実行します。 – mozillanerd
@ hs2d - 私はabatishchevの答えはあなたが探しているものだと思います。 – Tim