Создать класс C # из файла XML со смешанным типом объектов - PullRequest
0 голосов
/ 14 мая 2019

У меня есть классы, как показано ниже

public abstract class MainDTO
{
   public string Id;
   public string CreatedBy;
}

public class SubDTO : MainDTO
{
   public string SubKey;
}

public class LockDTO : SubDTO
{
   public string LockKey;
}

Мне нужно создать функцию, которая возвращает List<MainDTO>.Мой XML-файл, как показано ниже.

<MainDTOList>  
  <SubDTO>
    <Id>ABC</Id>
    <CreatedBy>XXX</CreatedBy>
    <SubKey>123045</SubKey>
  </SubDTO>
  <LockDTO>
    <Id>GERTE</Id>
    <CreatedBy>VGINA</CreatedBy>
    <SubKey>123045</SubKey>
    <LockKey>L123045</SubKey>
  </LockDTO>
</MainDTOList>

Я получил код для чтения XML-файла и возврата коллекции объектов, когда все объекты имеют одинаковый тип, с помощью XmlSerializer.Но в моем случае они разные.Не могли бы вы дать мне знать, как это сделать.

1 Ответ

0 голосов
/ 14 мая 2019

Простой способ, которым я могу думать о том, что вы можете достичь вышеизложенного, состоит в том, чтобы взглянуть на свою XML-структуру, не использовать ее немного, поэтому простите мои небольшие предположения об ошибках

Идея состоит в том, чтобы создатькласс, который выглядит как ваш XML, если значения появляются только один раз, используйте класс, который выглядит следующим образом (в качестве примера)

[XmlRoot("MainDTOList")]
public class SomeClass
{
    [XmlElement("SubDTO")]
    public SubDTO SubDTO{get;set;}

    [XmlElement("SubDTO")]
    public LockDTO LockDTO{get;set;}

    ....

}

Затем выполните простой XmlSerializer.Десериализовать для десериализации вашего конкретного XML

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...