関数本体内で例外が発生した場合、T の新しい空の型を返すにはどうすればよいですか?
xml のデシリアライズ中に問題が発生した場合に、新しい T() に x する最良の方法は何でしょうか?
どのように catch ブロックを取得したかを調べてください。これをどのように処理しますか?
public static T DeserializeXml<T>(this string xml) where T : class
{
XmlDocument doc = new XmlDocument();
MemoryStream ms = new MemoryStream();
StreamReader sr = null;
T x = null;
//
try
{
doc.LoadXml(xml); doc.Save(ms);
ms.Position = 0;
sr = new StreamReader(ms);
XmlSerializer i = new XmlSerializer(typeof(T));
x = (T)i.Deserialize(sr);
}
catch (Exception) {
x = null;
}
finally {
sr.Close(); sr.Dispose(); ms.Close(); ms.Dispose();
}
//
return x as T;
}