0

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

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

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

这些是相关的源代码:我编写了一个类来定义 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...;))我使用了一个测试应用程序来找出 XNA-Serializer 用于输出列表项的格式和枚举,所以我有理由确定,没有错误。

4

2 回答 2

0

看起来您的 XML 无效或您的模型无效。对于该mButtons字段,您已将其定义为 aList<bool>但在 XML 中它bool不是 a List<bool>。我要么编辑 XML 以使<mButtons>元素包含单个元素,要么将 Model 中<Item>的声明更改为not 。mButtonsboolList<bool>

于 2012-05-22T19:35:55.250 回答
0

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

问题是 Enum 'iD',它是一个抽象类,因此会引发上面提到的错误。似乎我被错误消息的庞大规模压倒了,只是忽略了关键的信息——序列化器试图构建一个抽象类。

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

于 2012-05-24T12:47:40.623 回答