Генерируйте DataContract от XSD

Я хочу смочь генерировать a DataContract из файла XSD, предпочтительно с помощью инструмента xsd.exe. Каков самый легкий путь к нему к автоматическому, генерируют [DataContract] и [DataMember] на каждом из моих объектов?

Или есть ли лучший подход? Я стараюсь не иметь необходимость воссоздать контракт данных каждый раз, когда файл XSD изменен и повторно создан.

26
задан casperOne 18 August 2011 в 20:30
поделиться

1 ответ

Возможно, вам потребуется ознакомиться с алгоритмом Buster, описанным в этой статье .

Из статьи они могут обнаружить дубликаты страниц, даже не проверяя их содержимое. Конечно, изучение содержимого повышает эффективность, но использование необработанных журналов сервера является достаточным для метода обнаружения повторяющихся страниц.

Аналогично рекомендации использовать хеши MD5 или SHA1, метод Buster в значительной степени полагается на сравнение размера файла в качестве первичного сигнала. Как бы просто это ни звучало, это довольно эффективно для начального первого прохода.

-121--3429598-

Похоже, вы получаете значение OutofmureError .

, если это так, попробуйте увеличить размер памяти кучи.

java -Xms<initial heap size> -Xmx<maximum heap size>
-121--3653506-

Средство xsd.exe предшествует WCF и ничего не знает о [DataContract] и [DataMember] . При использовании xsd.exe необходимо переключить WCF на использование GroupSerializer вместо используемого по умолчанию DataContractSerializer для сериализации контрактов данных.

Эквивалентом WCF для xsd.exe является svcutil.exe - он имеет параметр /dbonly , который создает только контракты данных из данного XSD-файла. Это приведет к созданию файла C # или VB.NET, содержащего хорошо аннотированные контракты данных.

Использование:

svcutil.exe (name of your XSD).xsd /dconly

Это приведет к созданию файла * .cs с тем же базовым именем в каталоге.

По моему опыту, svcutil.exe довольно придирчиво относится к своим XML-структурам - так что не удивляйтесь, если он лает на вас с множеством предупреждений и/или ошибок.

44
ответ дан 28 November 2019 в 06:42
поделиться
Другие вопросы по тегам:

Похожие вопросы: