这是我的代码:
public partial class MainWindow : Window
{
List<Cliente> CContent;
string mainPath = @"D:\70-536\Clientes.dat";
public MainWindow()
{
InitializeComponent();
Do();
}
private void Do()
{
FileInfo fi = new FileInfo(mainPath);
if (fi.Exists)
{
CContent = ReturnListOfPersistentFile<Cliente>(mainPath);
}
else
{
CContent = new List<Cliente>();
}
}
public List<T> ReturnListOfPersistentFile<T> (string Filename)
{
SoapFormatter sf = new SoapFormatter();
using (Stream fStream = new FileStream(Filename,FileMode.Open, FileAccess.Read,FileShare.None))
{
List<T> list = new List<T>();
list = (List<T>)sf.Deserialize(fStream);
return list;
}
}
这是我的内部异常的堆栈跟踪:
en System.Xml.XmlTextReaderImpl.Throw(Exception e) en System.Xml.XmlTextReaderImpl.Throw(String res, String arg) en System.Xml.XmlTextReaderImpl.ThrowUnclosedElements() en System.Xml.XmlTextReaderImpl.ParseAttributes() en System. Xml.XmlTextReaderImpl.ParseElement() 和 System.Xml.XmlTextReaderImpl.ParseDocumentContent() 和 System.Xml.XmlTextReaderImpl.Read() 和 System.Xml.XmlTextReader.Read() 和 System.Runtime.Serialization.Formatters.Soap.SoapParser。 ParseXml()
en System.Runtime.Serialization.Formatters.Soap.SoapParser.Run() en System.Runtime.Serialization.Formatters.Soap.ObjectReader.Deserialize(HeaderHandler handler, ISerParser serParser) en System.Runtime.Serialization.Formatters.Soap.SoapFormatter。 Deserialize(Stream serializationStream, HeaderHandler handler) zh System.Runtime.Serialization.Formatters.Soap.SoapFormatter.Deserialize(Stream serializationStream) zh Solution1.MainWindow.ReturnListOfPersistentFile[T](String Filename) en c:\users\u201114160\documents\visual studio 2010\Projects\Solution1\Solution1\MainWindow.xaml.cs:línea 99 en Solution1.MainWindow.Do() en c:\users\u201114160\documents\visual studio 2010\Projects\Solution1\Solution1\MainWindow.xaml.cs :linea 45
zh Solution1.MainWindow..ctor() zh c:\users\u201114160\documents\visual studio 2010\Projects\Solution1\Solution1\MainWindow.xaml.cs:linea 36
它让我发疯,一些想法?这个异常是因为“ReturnListOfPersistentFile”泛型方法而引发的,但是为什么?
提前致谢。
解答: 我试图用 SOAP 格式化程序序列化一个通用列表,但 SOAP 格式化程序不支持通用列表。
我在forums.microsoft.com 上遇到了这个帖子。让我引用微软员工的话:
我们决定不为 Whidbey 的 SoapFormatter 投资任何重要的新功能工作
谢谢大家。