0

こんにちは私はこのエラーを理解できません

このXMLファイルを読みたい:

<?xml version="1.0" encoding="utf-8"?>
<XnaContent>
  <Asset Type="ReadXML.Nod[]">
    <Item>
      <coneccion>
        <Item>
          <price>53.6003723</price>
          <startNode>
            <coneccion />
            <position>347 0 228</position>
          </startNode>
          <endNode>
            <coneccion />
            <position>334 0 176</position>
          </endNode>
        </Item>
      </coneccion>
      <position>347 0 228</position>
    </Item>
    <Item>
      <coneccion>
        <Item>
          <price>54.74486</price>
          <startNode>
            <coneccion />
            <position>334 0 176</position>
          </startNode>
          <endNode>
            <coneccion />
            <position>280 0 167</position>
          </endNode>
        </Item>
        <Item>
          <price>53.6003723</price>
          <startNode>
            <coneccion />
            <position>334 0 176</position>
          </startNode>
          <endNode>
            <coneccion />
            <position>347 0 228</position>
          </endNode>
        </Item>
      </coneccion>
      <position>334 0 176</position>
    </Item>
  </Asset>
</XnaContent>

私はそれを読むためにこのクラスを持っています:

public class Nod
{
    public List<Coneccion> coneccion;

    public Vector3 position;

    public Nodo(Vector3 p)
    {
        position = p;
        coneccion = new List<Coneccion>();
    }
}

public class Coneccion
{
    public float price;
    public Nodo startNode;
    public Nodo endNode;

    public Coneccion(Nod c, Nod f, float cost)
    {
        startNode = c;
        endNode = f;
        price = cost;
    }
}

これらのクラスはグラフをシミュレートします。

level.xmlという名前のこれらのxmlファイルを読み取る必要があり、これらの関数を使用して読み取ります

Nod[] graph1 = Content.Load<Nod[]>("level.xml");

しかし、私はプロジェクトを実行し、次のエラーを出力します:

Error   1   Building content threw InvalidOperationException: Cannot deserialize type ReadXML.Nod because it does not have a parameterless constructor.
en Microsoft.Xna.Framework.Content.Pipeline.Serialization.Intermediate.ReflectiveSerializer.Deserialize(IntermediateReader input, ContentSerializerAttribute format, Object existingInstance)
en Microsoft.Xna.Framework.Content.Pipeline.Serialization.Intermediate.IntermediateReader.ReadRawObjectInternal[T](ContentSerializerAttribute format, ContentTypeSerializer typeSerializer, Object existingInstance)
en Microsoft.Xna.Framework.Content.Pipeline.Serialization.Intermediate.IntermediateReader.ReadObjectInternal[T](ContentSerializerAttribute format, ContentTypeSerializer typeSerializer, Object existingInstance)
en Microsoft.Xna.Framework.Content.Pipeline.Serialization.Intermediate.CollectionHelper.Deserialize(IntermediateReader input, ContentSerializerAttribute format, Object collection)
en Microsoft.Xna.Framework.Content.Pipeline.Serialization.Intermediate.ArraySerializer`1.Deserialize(IntermediateReader input, ContentSerializerAttribute format, T[] existingInstance)
en Microsoft.Xna.Framework.Content.Pipeline.Serialization.Intermediate.ContentTypeSerializer`1.Deserialize(IntermediateReader input, ContentSerializerAttribute format, Object existingInstance)
en Microsoft.Xna.Framework.Content.Pipeline.Serialization.Intermediate.IntermediateReader.ReadRawObjectInternal[T](ContentSerializerAttribute format, ContentTypeSerializer typeSerializer, Object existingInstance)
en Microsoft.Xna.Framework.Content.Pipeline.Serialization.Intermediate.IntermediateReader.ReadObjectInternal[T](ContentSerializerAttribute format, ContentTypeSerializer typeSerializer, Object existingInstance)
en Microsoft.Xna.Framework.Content.Pipeline.Serialization.Intermediate.IntermediateReader.ReadObject[T](ContentSerializerAttribute format)
en Microsoft.Xna.Framework.Content.Pipeline.Serialization.Intermediate.IntermediateSerializer.Deserialize[T](XmlReader input, String referenceRelocationPath)
en Microsoft.Xna.Framework.Content.Pipeline.XmlImporter.Import(String filename, ContentImporterContext context)
en Microsoft.Xna.Framework.Content.Pipeline.ContentImporter`1.Microsoft.Xna.Framework.Content.Pipeline.IContentImporter.Import(String filename, ContentImporterContext context)
en Microsoft.Xna.Framework.Content.Pipeline.BuildCoordinator.ImportAssetDirectly(BuildItem item, String importerName)
en Microsoft.Xna.Framework.Content.Pipeline.BuildCoordinator.ImportAsset(BuildItem item)
en Microsoft.Xna.Framework.Content.Pipeline.BuildCoordinator.BuildAssetWorker(BuildItem item)
en Microsoft.Xna.Framework.Content.Pipeline.BuildCoordinator.BuildAsset(BuildItem item)
en Microsoft.Xna.Framework.Content.Pipeline.BuildCoordinator.RunTheBuild()
en Microsoft.Xna.Framework.Content.Pipeline.Tasks.BuildContent.RemoteProxy.RunTheBuild(BuildCoordinatorSettings settings, TimestampCache timestampCache, ITaskItem[] sourceAssets, String[]& outputContent, String[]& rebuiltContent, String[]& intermediates, Dictionary`2& dependencyTimestamps, KeyValuePair`2[]& warnings)  C:\Downloads\Bomber-O-Man (Entrega 2)\IAJMovimiento\IAJMovimiento\IAJMovimientoContent\level.xml    IAJMovimiento

助けてください

4

1 に答える 1

0

このコードを自分のNodまたはNodoクラスに追加する必要があります(そのうちの1つはスペルが間違っています)。

public Nodo()
{
    position = Vector3.Zero;
    coneccion = new List<Coneccion>();
}

それは私が一目で見ることができるものです、他のエラーもあるかもしれません。

また、私がここで理解していることから、コンストラクター呼び出しの外側の位置を変更する必要がありますContentTypeWriter

于 2012-06-16T02:42:33.130 に答える