C# 使用内容管道的单游戏XML序列化

C# 使用内容管道的单游戏XML序列化,c#,xml,monogame,C#,Xml,Monogame,我一直在尝试为游戏中的项目实现一个XML系统。。但我就是不能让它工作。 我使用的是Monogame及其附带的内容管道。 我创建了一个Inventory类和一个Item类 以下是Inventory类的代码段(具有序列化功能): 我在这里读到了一些其他的问题,我必须做一个参考,但我就是找不到一个方法来做这件事。在解决方案资源管理器中,我可以看到引用,但当我单击“添加”时,我在项目中看不到任何内容,只有框架等标准内容。 哦,我有一个在Item类中没有参数的构造函数,所以应该可以 还有一件事。我曾尝试将

我一直在尝试为游戏中的项目实现一个XML系统。。但我就是不能让它工作。 我使用的是Monogame及其附带的内容管道。 我创建了一个Inventory类和一个Item类

以下是Inventory类的代码段(具有序列化功能):

我在这里读到了一些其他的问题,我必须做一个参考,但我就是找不到一个方法来做这件事。在解决方案资源管理器中,我可以看到引用,但当我单击“添加”时,我在项目中看不到任何内容,只有框架等标准内容。 哦,我有一个在Item类中没有参数的构造函数,所以应该可以

还有一件事。我曾尝试将项目列表写入XML文件,但效果非常好


提前谢谢

您需要添加对已编译dll库的引用,这意味着您的类型需要在外部项目中定义

创建另一个编译为dll的项目,在其中定义所有结构和类(至少是需要序列化的结构和类),并通过执行以下操作从content manager添加对dll的引用:

  • 打开内容管道管理器
  • 选择根节点(“内容”)
  • 在“属性”选项卡上,单击“引用”
  • 单击“添加”并选择从其他项目生成的dll文件的路径

  • 我最近在monogame社区问了一个类似的问题,目前不可能在不使用另一个构建到dll中的项目的情况下将您自己的项目中的类型序列化到xml中。

    可能会有所帮助。对不起,我现在没有时间写一个正确的答案。@craftworkgames我做了一些事情,但我不知道如何做一杯的事情。如果我只想使用XML文件创建对象,我应该在编写器中使用什么而不是FileData?我需要处理吗?我是个新手……我不明白你说的“还有一件事”是什么意思。我曾尝试将项目列表写入XML文件,但它工作得很好…“-什么工作正常?您是否能够反序列化类型的单个实例?
    public class Inventory
    {    
        [XmlElement("Item")]
        public static List<Item> itemList;
    
        public Inventory (Vector2 _position)
        {
            itemList = new List<Item>();
        }
    
        public void LoadContent()
        {
            XmlSerializer deserializer = new XmlSerializer(typeof(Item));
            TextReader reader = new StreamReader("Content/Items/itemEntities.xml");
            object obj = deserializer.Deserialize(reader);
            Inventory XmlData = (Inventory)obj;
            reader.Close();
            }
    }
    
    <?xml version="1.0" encoding="utf-8"?>
    <XnaContent xmlns:ns="Microsoft.Xna.Framework">
      <Asset Type="Game.Item[]">
      <Item>
        <itemType>Weapon</itemType>
        <itemRarity>Rare</itemRarity>
        <itemID>0001</itemID>
        <positionID>
          <X>1</X>
          <Y>1</Y>
        </positionID>
        <name>The sword</name>
        <description>Description</description>
      </Item>
      <Item>
        <itemType>Equipment</itemType>
        <itemRarity>Uncommon</itemRarity>
        <itemID>0002</itemID>
        <positionID>
          <X>1</X>
          <Y>1</Y>
        </positionID>
        <name>The Item</name>
        <description>Description</description>
      </Item>
      <Item>
        <itemType>Drone</itemType>
        <itemRarity>Common</itemRarity>
        <itemID>0003</itemID>
        <positionID>
          <X>1</X>
          <Y>1</Y>
        </positionID>
        <name>The Drone</name>
        <description>Description</description>
      </Item>
      </Asset>
    </XnaContent>
    
    error: Importer 'XmlImporter' had unexpected failure!
    Microsoft.Xna.Framework.Content.Pipeline.InvalidContentException: Could not resolve type 'Game.Item[]'.