XmlSerializer не собирает некоторые массивы при десериализации - PullRequest
0 голосов
/ 18 марта 2012

XmlSerializer пока что довольно хорош, но, похоже, он нарушает ситуацию, которая не кажется слишком сложной.Вот структура моего XML, а не реальные вещи, но я думаю, что я захватил базовую структуру):

<RootNode>
  <SomeNodeNames>
    <SomeNodeName>
      <anelement>avalue</anelement>
    </SomeNodeName>
  </SomeNodeNames>
  <TheseOnesDontWork>
    <ThisOneDoesntWork>
      <elementWhichDoesWork>8</elementWhichDoesWork>
      <collection1>
        <itemrow>
          <text>text.......</text>
        </itemrow>
        <itemrow>
          <text>more text........</text>
        </itemrow>
      </collection1>
    </ThisOneDoesntWork>
  </TheseOnesDontWork>
</CutsceneData>

Итак, у меня есть несколько классов, которые соответствуют каждому из этих элементов.

public class RootNode
{
    public SomeNodeName[] SomeNodeNames;
    public ThisOneDoesntWork[] TheseOnesDontWork;
}

public class ThisOneDoesntWork
{
    public int elementWhichDoesWork;
    public itemrow[] collection1;
}

public class itemrow
{
    public string text;
}

Вызов XmlSerializer довольно прост.

XmlSerializer serializer = new XmlSerializer(typeof(RootNode), attrOverrides);
FileStream stream = File.Open("filename.xml", FileMode.Open);
RootNode obj = (RootNode)serializer.Deserialize(stream);

Итак, он загружается правильно, за исключением того, что collection1 вообще не создается.Я вставил обработчик события UnknownNode, и, конечно же, он установил флаг, указывающий, что itemrow имеет неизвестный тип.Я не уверен, почему это так.Есть несколько коллекций, и одна из коллекций содержит элемент, который сам является коллекцией.Действительно ли эта ситуация требует написания моего собственного десериализатора, или я просто упускаю простое исправление?

...