XSD не может создать класс из XML на основе унаследованных классов - PullRequest
0 голосов
/ 01 апреля 2011

У меня проблема с созданием * .cs (C # Class) на основе XML, сгенерированного сериализацией другого C # класса.XSD.exe выдает следующую ошибку:

- A column named 'Conditions' already belongs to this DataTable: cannot set a
  nested table name to the same name.

Мой процесс выглядит следующим образом:

  1. Написание некоторого кода C # (пример ниже)
  2. Сериализация в XML с использованием XSD.EXE to
  3. create * .cs Десериализовать в новый * .cs
  4. (для доставки) и т. Д.

Классы, которые сериализуются в XML (в пункте 1) выглядит так:

public class A
{
   public A(){}
   private List<string> _cond = new List<String>();
   public List<string> Conditions 
   {
      get{ return _cond; }
      set{ _cond = value }
   }
}

public class B:A
{
}
public class C:A
{
}

public class Data
{
  B b = new B();
  C c = new C();
  /* ... ADD SOME DATA etc ... */
} 

// After that I serialize to XML the "Data" class object

Кто-нибудь может предложить обходной путь ?!Это явно связано с наследуемым условием

1 Ответ

0 голосов
/ 01 апреля 2011

Вы можете изменить способ, которым xsd.exe создает выходные данные, в вашем случае имеет смысл использовать ключ / c (lasses).Тогда он создаст не набор данных, а "обычные" классы.

Также имеется LinqToXsd , который имеет довольно приличный генератор кода.

...