【问题标题】:InvalidOperationsException during XML-Serialization in XNAXNA 中 XML 序列化期间的 InvalidOperationsException
【发布时间】:2012-05-28 07:08:00
【问题描述】:

我有一个关于我在尝试通过 XNA 4.0 内容管道读取 XML 文件以构建对象时遇到的错误的问题。首先,我重用了我的旧 XNA 3.1 代码,该代码在当时可以使用,但现在会抛出错误消息:

建筑内容抛出 InvalidOperationException: Instanzen von abstrakten Klassen können nicht erstellt werden。 (无法构建抽象类的实例——粗略翻译) 在 ReflectionEmitUtils() ...并且永远持续下去,如果需要,我可以发布它,但为了更好地阅读我的初始请求..

然后我使用了这个Method,但它抛出了同样的错误。

这些是相关的源代码: 我编写了一个类来定义 XML 文件的内容/结构:

public class Command
    {        
        public List<bool> mButtons;       
        public List<Keys> keys;        
        public Enum iD;       
    }

这是我的 XML 文件,我想用它来构建命令对象

<?xml version="1.0" encoding="utf-8" ?>
<XnaContent>
  <Asset Type="KinectRTS_Input.Command">
    <mButtons>true/mButtons>
    <keys>
      <Item>LeftControl/Item>      
    </keys>
    <iD>SMulti/iD>
  </Asset>
</XnaContent>

(在我的代码中,括号都是正确的,但由于此表单处理 XML-Tags...;)) 我使用Test-Application 来找出 XNA-Serializer 用于输出 List-Items 和枚举的格式,所以我有理由确定,没有错误。

【问题讨论】:

    标签: xna xml-serialization invalidoperationexception


    【解决方案1】:

    太简单了...问题不在于列表,实际上我的请求中提到的测试应用程序实际上返回了 XML-Tags,其中键列表带有 Item-Tags,而 bool- 则没有 Item-Tags列表。将 bool 包装到 Item-Tags 中会导致“at not expected”错误。不过,我不知道为什么 Serializer 处理 List 和 List 的方式不同。

    问题在于 Enum 'iD',它是一个抽象类,因此会引发上述错误。似乎我对错误消息的庞大感到不知所措,只是忽略了关键信息——序列化程序试图构建一个抽象类。

    不过还是谢谢。 ——黑二凯美

    【讨论】:

      【解决方案2】:

      看起来您的 XML 无效或模型无效。对于mButtons 字段,您已将其定义为List&lt;bool&gt;,但在XML 中它是bool 而不是List&lt;bool&gt;。我要么编辑 XML 以使 &lt;mButtons&gt; 元素包含单个 &lt;Item&gt; 元素,要么将模型中 mButtons 的声明更改为 bool 而不是 List&lt;bool&gt;

      【讨论】:

        猜你喜欢
        • 2013-06-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-08-17
        • 2019-01-26
        相关资源
        最近更新 更多