0

私はこのクラスを持っていますidentity

namespace Game.World.Entities
{
    [XmlRoot("Identity")]
    public class Identity
    {
        public string Name { get; set; }
        public string Texture { get; set; }
        public string HeroType { get; set; }

        public Stats Stats { get; set; }
        public ActiveAbilitites ActiveAbilitites { get; set; }
        public PassiveAbilitites PassiveAbilitites { get; set; }
    }

    public class ActiveAbilitites
    {
        [XmlElement("AbilityId")]
        public List<int> ActiveAbilitiesId { get; set; }
    }

    public class PassiveAbilitites
    {
        [XmlElement("AbilityId")]
        public List<int> PassiveAbilitiesId { get; set; }
    }

    public class Stats
    {
        public int Health { get; set; }
        public int MagicDamage { get; set; }
        public int PhysicalDamage { get; set; }
        public int Defense { get; set; }
    }
}

そのクラスをxmlドキュメントにシリアル化しました。

<?xml version="1.0" encoding="utf-8"?>
<Identity xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <Name>foo</Name>
  <Texture>player</Texture>
  <HeroType>tracker</HeroType>
  <Stats>
    <Health>5</Health>
    <MagicDamage>5</MagicDamage>
    <PhysicalDamage>5</PhysicalDamage>
    <Defense>5</Defense>
  </Stats>
  <ActiveAbilitites>
    <AbilityId>1</AbilityId>
    <AbilityId>2</AbilityId>
    <AbilityId>3</AbilityId>
  </ActiveAbilitites>
  <PassiveAbilitites>
    <AbilityId>1</AbilityId>
    <AbilityId>2</AbilityId>
    <AbilityId>3</AbilityId>
  </PassiveAbilitites>
</Identity>

ただし、xmlをidentityオブジェクトに非正規化しようとすると、エラーが発生します

xmlドキュメントにエラーがあります(2,2).....
System.InvalidOperationExceptionは予期されていませんでした。
Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderList1.Read6_ArrayOfIdentity()で

xmlはセラリゼーションからのものであるため、これは私を困惑させています。そのため、なぜそれを非セラリゼーションできないのかわかりません。私はどこかで注釈タグを見逃したと思います。この問題に関する助けは素晴らしいでしょう。

4

1 に答える 1

0

これは、コードを非正規化する方法に問題があることが判明しました。私はそれをそんなに台無しにするために何をしたのか分かりませんが、それは私の文字列リーダーと関係があると思います。TextReaderの代わりに文字列からDeserializeからいくつかのサンプルコードをコピーして貼り付けたところ、正常に動作するようになりました。

于 2012-09-15T21:20:35.867 に答える