为什么这个 XMLSerialize 不起作用?
Why won't this XMLSerialize work?
我很难调试它,因为它在 C# DLL 中,我不知道如何从调用它的 MFC 可执行文件中调试。
现在,如果我调用这个方法:
public void SavePublisherData(out Int64 iResult)
{
using (System.IO.StreamWriter file =
new System.IO.StreamWriter(_strPathXML, true))
{
file.WriteLine("This is a test");
}
iResult = MakeResult(true);
}
如果我从我的 MFC 应用程序调用它是可行的。我最终得到了一个文件。但如果我做我真正想做的事,我不会得到任何结果。我有这个 Publisher class:
using System.Xml.Serialization;
namespace MSAToolsLibrary
{
class Publisher
{
public Publisher()
{
}
[XmlElement]
public string Name
{
get { return _Name; }
set { _Name = value; }
}
private string _Name;
[XmlElement]
public string Notes
{
get { return _Notes; }
set { _Notes = value; }
}
private string _Notes;
}
}
我有一个 parent class:
using System;
using System.Collections.Generic;
using System.Xml.Serialization;
namespace MSAToolsLibrary
{
[XmlRoot(ElementName = "PublisherDatabase", Namespace = "http://www.publictalksoftware.co.uk/msa")]
class PublisherData
{
public PublisherData()
{
_Publishers = new List<Publisher>();
}
[XmlArray]
public List<Publisher> Publishers
{
get { return _Publishers; }
set { _Publishers = value; }
}
private List<Publisher> _Publishers;
public void AddStudent(String strName, String strNotes)
{
Publisher _Publisher = new Publisher()
{
Name = strName,
Notes = strNotes
};
_Publishers.Add(_Publisher);
}
}
}
DLL 库执行这样的保存:
public void SavePublisherData(out Int64 iResult)
{
try
{
XmlSerializer x = new XmlSerializer(_PublisherData.GetType());
using (StreamWriter writer = new StreamWriter("d:\andrew-test-3.xml"))
{
x.Serialize(writer, _PublisherData);
}
}
catch
{
iResult = MakeResult(false);
return;
}
iResult = MakeResult(true);
}
return 结果为真。我没有提出任何例外。但是我没有创建任何文件。
我已将 4 个项目添加到 Publishers 数组中,因此我希望它创建一个简单的 XML 文件。
我的错误是什么?
XmlSerializer 仅适用于 public 类,您的 PublisherData 和 Publisher 类 都是内部的。
我很难调试它,因为它在 C# DLL 中,我不知道如何从调用它的 MFC 可执行文件中调试。
现在,如果我调用这个方法:
public void SavePublisherData(out Int64 iResult)
{
using (System.IO.StreamWriter file =
new System.IO.StreamWriter(_strPathXML, true))
{
file.WriteLine("This is a test");
}
iResult = MakeResult(true);
}
如果我从我的 MFC 应用程序调用它是可行的。我最终得到了一个文件。但如果我做我真正想做的事,我不会得到任何结果。我有这个 Publisher class:
using System.Xml.Serialization;
namespace MSAToolsLibrary
{
class Publisher
{
public Publisher()
{
}
[XmlElement]
public string Name
{
get { return _Name; }
set { _Name = value; }
}
private string _Name;
[XmlElement]
public string Notes
{
get { return _Notes; }
set { _Notes = value; }
}
private string _Notes;
}
}
我有一个 parent class:
using System;
using System.Collections.Generic;
using System.Xml.Serialization;
namespace MSAToolsLibrary
{
[XmlRoot(ElementName = "PublisherDatabase", Namespace = "http://www.publictalksoftware.co.uk/msa")]
class PublisherData
{
public PublisherData()
{
_Publishers = new List<Publisher>();
}
[XmlArray]
public List<Publisher> Publishers
{
get { return _Publishers; }
set { _Publishers = value; }
}
private List<Publisher> _Publishers;
public void AddStudent(String strName, String strNotes)
{
Publisher _Publisher = new Publisher()
{
Name = strName,
Notes = strNotes
};
_Publishers.Add(_Publisher);
}
}
}
DLL 库执行这样的保存:
public void SavePublisherData(out Int64 iResult)
{
try
{
XmlSerializer x = new XmlSerializer(_PublisherData.GetType());
using (StreamWriter writer = new StreamWriter("d:\andrew-test-3.xml"))
{
x.Serialize(writer, _PublisherData);
}
}
catch
{
iResult = MakeResult(false);
return;
}
iResult = MakeResult(true);
}
return 结果为真。我没有提出任何例外。但是我没有创建任何文件。
我已将 4 个项目添加到 Publishers 数组中,因此我希望它创建一个简单的 XML 文件。
我的错误是什么?
XmlSerializer 仅适用于 public 类,您的 PublisherData 和 Publisher 类 都是内部的。