private
static
void
Serialize1(
string
filename,
object
obj)
{
var
stream =
new
FileStream
(filename,
FileMode
.OpenOrCreate);
var
serializer =
new
DataContractSerializer(
typeof
(PackageManifest));
serializer.WriteObject(stream, obj);
stream.Close();
}
當用以上方法,序列化一個對象後,用下面的反序列方法,發現有的文件竟然不能反序列化,(PackageManifest 裏面沒有特殊對象,否則不會有的能夠序列化,而有的不能夠)
private
PackageManifest
Deserialize(
string
manifestFilePath)
{
try
{
var
serializer =
new
DataContractSerializer
(
typeof
(
PackageManifest
));
var
stream =
new
FileStream
(manifestFilePath,
FileMode
.Open,
FileAccess
.Read);
var
manifestObject = serializer.ReadObject(stream)
as
PackageManifest
;
stream.Close();
return
manifestObject;
}
catch
(
Exception
ex)
{
return
null
;
}
}
然而,當我用格式化工具,將Serialize1序列化的對象格式化後,再來調用反序列化竟然又能夠了。 因而找到一個辦法,Serialize的時候直接輸出格式化的xml就沒有問題了。
private
static
void
Serialize2(
string
filename,
object
obj)
{
var
ds =
new
DataContractSerializer
(
typeof
(
PackageManifest
));
var
settings =
new
XmlWriterSettings
{ Indent =
true
};
using
(
var
writer =
XmlWriter
.Create(filename, settings))
{
ds.WriteObject(writer, obj);
}
}