OracleException には、パブリック コンストラクターも、新しいインスタンスを取得する方法もありません。XmlSerializerHelper クラスを試してみましたが、パブリック パラメーターなしのコンストラクターが必要です。
BinaryFormatter を使用して OracleException をシリアライズし、ファイルに書き込みました。
ファイルで OracleException をシリアライズし、XmlSerializer を使用してデシリアライズするにはどうすればよいですか (テスト上の理由から)。
参照: http://geekswithblogs.net/WillSmith/archive/2008/07/25/testing-oracleexception.aspx
PD: SoapFormatter と BinaryFormatter のどちらが優れていますか?
コード
SerializationHelper.Serialize(@"C:\Temp\ExcepcionOracle.bin", ex);
var exOra = SerializationHelper.Deserialize(@"C:\Temp\ExcepcionOracle.bin");
public static void Serialize(string fileName, Object obj)
{
var binaryFormatter = new BinaryFormatter();
var fileStream = new FileStream(fileName, FileMode.Create);
try
{
binaryFormatter.Serialize(fileStream, obj);
}
catch (SerializationException ex)
{
throw new ApplicationException("The object graph could not be serialized", ex);
}
finally
{
fileStream.Close();
}
}
public static object Deserialize(string fileName)
{
var binaryFormatter = new BinaryFormatter();
var fileStream = new FileStream(fileName, FileMode.Open);
try
{
fileStream.Seek(0, SeekOrigin.Begin);
return binaryFormatter.Deserialize(fileStream);
}
catch (SerializationException ex)
{
throw new ApplicationException("Serialization Exception: " + ex.Message);
}
finally
{
fileStream.Close();
}
return null;
}