XML 无法序列化 - 无参数构造函数错误,即使有构造函数

XML cannot be serialized - parameterless constructor error, even with constructor

我正在尝试使用 XmlSerializer 将对象序列化为 xml,但一直出现此错误:

System.InvalidOperationException: [MySql.Data.MySqlClient.MySqlParameter] cannot be serialized because it does not have a parameterless constructor.

我遵循了 why xml serializable class need a parameterless constructor 的解决方案,这似乎已经解决了其他人的问题,但我仍然遇到错误。当我添加 public MyClass() 时,它给我 'MyClass.MyClass()' must declare a body because it is not marked abstract, extern, or partial,所以我添加了一个主体,第一个错误又回来了。

请注意,最初没有任何构造函数,无论是无参数构造函数还是其他构造函数,所以我不明白为什么它不只是自动创建自己的构造函数。

我做错了什么?

添加代码:

MyFile.cs

public async Task Save(MyClass xmlObj)
{
    XmlSerializer xmlSer = new XmlSerializer(this.GetType()); //I think the problem is likely to be here
    StringWriter strWriter = new StringWriter();

    xmlSer.Serialize(strWriter, xmlObj);
    objToUpdate.ColName = (strWriter.ToString());
    await dbContext.SaveChangesAsync();
}

File.cs

public async Task<IActionResult> SaveData(params...)
{
    await new MyFile<MySqlParameter>(accessParam, dbContext).Save(xmlObj);
}

你应该添加

public MyClass(){}

到class。没有主体和空主体之间是有区别的,这正是您在此构造函数上想要的。

我想通了...

我一直在创建一个新的 XmlSerializer 并传入 SO 答案中发布的参数:

XmlSerializer xmlSer = new XmlSerializer(this.GetType());

当使用与反序列化相同的 XmlSerializer 时,它确实工作得很好:

XmlSerializer objSer = new XmlSerializer(typeof(MyClass));