【发布时间】:2021-10-07 00:15:18
【问题描述】:
我终于将我的项目从 Unity 2019.4.28f1 迁移到了 2020.3.14f1。在清理了一些弃用之后,一切似乎都恢复了正常,但是在 Android 上部署时,我现在看到了 XML 反序列化的问题。尝试从字符串反序列化数据时出现此异常:
NotSupportedException: Parent does not have a default constructor. The default constructor must be explicitly defined.
at System.Reflection.Emit.TypeBuilder.DefineDefaultConstructor (System.Reflection.MethodAttributes attributes) [0x00070] in <1dc10152da894b47b8bbfed156e7b841>:0
at System.Xml.Serialization.XmlSerializationILGen.GenerateBaseSerializer (System.String baseSerializer, System.String readerClass, System.String writerClass, System.Xml.Serialization.CodeIdentifiers classes) [0x00103] in <d0db3f607625460db8f5df59fe982070>:0
at System.Xml.Serialization.TempAssembly.GenerateRefEmitAssembly (System.Xml.Serialization.XmlMapping[] xmlMappings, System.Type[] types, System.String defaultNamespace, System.Security.Policy.Evidence evidence) [0x002ed] in <d0db3f607625460db8f5df59fe982070>:0
at System.Xml.Serialization.TempAssembly..ctor (System.Xml.Serialization.XmlMapping[] xmlMappings, System.Type[] types, System.String defaultNamespace, System.String location, System.Security.Policy.Evidence evid
这是我正在使用的辅助方法:
public static T DeserializeXml<T>(this string xml)
{
T obj = default(T);
XmlSerializer serializer = new XmlSerializer(typeof(T));
using (TextReader textReader = new StringReader(xml))
{
obj = (T)serializer.Deserialize(textReader);
}
return obj;
}
这一切都工作了多年,没有问题。在编辑器中运行或部署到 iOS 或独立/桌面后不会发生这些异常。所以它似乎只与编译到Android有关。 我四处寻找,但没有找到任何具体的线索是什么原因以及如何解决它。所以欢迎任何提示!
【问题讨论】:
标签: android unity3d c#-4.0 mono