2013-09-09 2 views
1

Я добавляю ссылку на службу в свой проект и выбираю параметр «внутренний» доступ. Из 15 веб-сервисов 3 упрямы, и большинство классов внутри автогенерированных Reference.cs входят в Public (как правило, я выбираю «internal»)Service Reference автогенерированные классы в Reference.cs не генерируются как внутренние

Я прошел через свои классы в Веб-ссылки, имеющие эту проблему, и ничто действительно не выпрыгивает, как основное различие между теми, у кого есть проблемы и те, которые работают.

Кто-нибудь знает общую причину этой проблемы? например, атрибут Xml для класса, который может вызвать эту проблему или что-то еще?

ответ

3

Вопрос именно в этом. XmlSerializer не может сериализовать внутренние типы. Это ограничение кратко упоминается Microsoft here в разделе «Уровень доступа для созданных классов не имеет эффекта».

Установка уровня доступа для опции сгенерированных классов в диалоговом окне Настройки Service окна Ссылки на внутренний или друг, возможно, не всегда работы. Несмотря на то, что опция появляется в диалоговом окне, будут созданы восстановительные классы поддержки с уровнем доступа Public.

Это известное ограничение определенных типов, например сериализованное с использованием XmlSerializer.

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

Вам придется взять это с Microsoft. Предполагая, что еще не было запрошенного решения, отклоненного как «Не исправить».