我已经尝试调试我的Discord机器人项目的问题(使用Discord的API)已有相当一段时间了。如果有人可以帮助我确定问题,我将不胜感激。 这是我要执行的操作的详细信息:
我想将Archive对象的列表保存到一个名为config.xml的xml文件中。
我在主“ Program”类中声明该列表,但在“存档类”方法AddArchive()中使用它。我敢肯定有更好的方法。
当尝试向列表中添加新的Archive对象,然后对其进行xml序列化时,出现以下错误: 引发的异常:System.Private.Xml.dll中的'System.InvalidOperationException',控制台显示“生成XML文档时出错。” xml文件已创建,但未编写任何文件。
这是我的存档课程:
public class Archive : Program
{
public ulong sourceID { get; set; }
public ulong destID { get; set; }
public Archive() { }
public Archive(ulong sourceID, ulong destID)
{
this.sourceID = sourceID;
this.destID = destID;
AddArchive();
}
private void AddArchive()
{
if (!archiveList.Contains(this))
{
archiveList.Add(this);
XmlSerializer archiveXML = new XmlSerializer(typeof(List<Archive>));
TextWriter tw = new StreamWriter(Directory.GetCurrentDirectory() + "\\config.xml");
archiveXML.Serialize(tw, archiveList); //Error occurs here
tw.Close();
}
}
}
我在主程序类中的处理程序:
private async Task HandleCommandAsync(SocketMessage arg)
{
var message = arg as SocketUserMessage;
if (message is null || message.Author.IsBot)
return;
int argPos = 0;
if (message.HasStringPrefix("!", ref argPos) || message.HasMentionPrefix(client.CurrentUser, ref argPos))
{
var context = new SocketCommandContext(client, message);
var result = await commands.ExecuteAsync(context, argPos, services);
if (!result.IsSuccess)
Console.WriteLine(result.ErrorReason);
}
}
最后是addarchive命令类:
public class AddArchiveCommand : ModuleBase<SocketCommandContext>
{
[Command("addarchive")]
public async Task AddArchiveAsync(ITextChannel sourceChan, ITextChannel destChan)
{
Archive temp = new Archive(sourceChan.Id, destChan.Id);
}
}
我希望config.xml文件中有一个带有sourceid和destinationid的新条目。谢谢您的帮助。