c# - Xml 序列化在简单类上因 NullReferenceException 而失败

标签 c# unity3d mono

我有我想要序列化的简单类:

public class InnerCharacter : Object {

    public double xp;
    public double hp;
}

我厌倦了不同的方法,例如:

public static void TestSerialize()
{
    InnerCharacter c = new InnerCharacter();
    Serialize(c);
}
static public void Serialize(InnerCharacter details)
{
    XmlSerializer serializer = new XmlSerializer(typeof(InnerCharacter));
    using (TextWriter writer = new StreamWriter(@"Xml.xml")) {
        serializer.Serialize(writer, details);
    }
}

我也试过文件流和其他方法,但它们都导致相同的异常。以下是我如何尝试在我的一个游戏对象上加载 Unity 中的代码:

public void Start()
{
    TestSerialize();
}

它们都因相同的 NullReferenceException 而失败:

NullReferenceException
System.Reflection.MonoProperty.GetterAdapterFrame[Object,String] (System.Reflection.Getter`2 getter, System.Object obj) (at /Users/builduser/buildslave/mono-runtime-and-classlibs/build/mcs/class/corlib/System.Reflection/MonoProperty.cs:234)
System.Reflection.MonoProperty.GetValue (System.Object obj, System.Object[] index) (at /Users/builduser/buildslave/mono-runtime-and-classlibs/build/mcs/class/corlib/System.Reflection/MonoProperty.cs:292)
System.Xml.Serialization.XmlTypeMapMember.GetValue (System.Object ob)
System.Xml.Serialization.XmlSerializationWriterInterpreter.GetMemberValue (System.Xml.Serialization.XmlTypeMapMember member, System.Object ob, Boolean isValueList)
System.Xml.Serialization.XmlSerializationWriterInterpreter.WriteElementMembers (System.Xml.Serialization.ClassMap map, System.Object ob, Boolean isValueList)
System.Xml.Serialization.XmlSerializationWriterInterpreter.WriteObjectElementElements (System.Xml.Serialization.XmlTypeMapping typeMap, System.Object ob)
System.Xml.Serialization.XmlSerializationWriterInterpreter.WriteObjectElement (System.Xml.Serialization.XmlTypeMapping typeMap, System.Object ob, System.String element, System.String namesp)
System.Xml.Serialization.XmlSerializationWriterInterpreter.WriteObject (System.Xml.Serialization.XmlTypeMapping typeMap, System.Object ob, System.String element, System.String namesp, Boolean isNullable, Boolean needType, Boolean writeWrappingElem)
System.Xml.Serialization.XmlSerializationWriterInterpreter.WriteRoot (System.Object ob)
System.Xml.Serialization.XmlSerializer.Serialize (System.Object o, System.Xml.Serialization.XmlSerializationWriter writer)
System.Xml.Serialization.XmlSerializer.Serialize (System.Xml.XmlWriter writer, System.Object o, System.Xml.Serialization.XmlSerializerNamespaces namespaces)

最佳答案

XmlSerializer 不适用于从 UnityEngine.Object 继承的对象.来源:XML Serialization error .如果可能,请尝试删除继承。

关于c# - Xml 序列化在简单类上因 NullReferenceException 而失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30312538/

相关文章:

c# - Xamarin 未找到 'ToolbarItems' 的属性、可绑定(bind)属性或事件

c# - 有没有一种快速的方法来获得两个实体之间的每一个关联?

c# - 将图像传递给 openCV 中的 blur() 或 Canny() 时出现类似幽灵的伪像

ios - 在 iOS 上使用 C# 的 LINQ OrderBy 的 JIT 错误

单声道错误 : error CS0117: `System.IO.File' does not contain a definition for `ReadLines'

.net - 哪些报告框架或报告控件可以与 Mono.net 一起使用?请列出它们的名称?

java - Selenium 测试: Method Not Allowed error

c# - 更改安装项目的 ProductVersion 的预构建事件在构建之后才会生效

android - 如何从Unity Activity中调用之前的Android Activity

iphone - 从 monotouch 到 Malloc() 的最佳方法是什么?