Расширение библиотеки классов .NET 2.0 для использования в WCF - PullRequest
1 голос
/ 11 января 2010

Мы публикуем библиотеку классов, которая должна оставаться совместимой с .NET 2.0. Однако мы также хотели бы использовать эту библиотеку классов для проектов на основе WCF.

Чтение, например expose-object-from-class-library-using-wcf предлагает подход к использованию библиотек классов 2.0 путем создания объектов DataContractSurrogate для сопоставления классов 2.0. Тем не менее, наша иерархия объектов богата и глубока, и это было бы утомительно и трудно поддерживать.

Поскольку мы контролируем исходный код, я ищу более простой подход.

Одна мысль состоит в том, чтобы добавить атрибут DataConract к исходному коду и предоставить «пустую» реализацию DataContractAttribute, когда построено решение, ориентированное на среду выполнения 2.0, и использовать реализацию System.Runtime.Serialization, когда решение строится с целью 3.0 и более новые среды выполнения. Это может быть достигнуто путем ручной настройки ссылок между сборками.

Есть ли лучший способ реализовать этот подход?

Есть ли лучший подход?

Ответы [ 2 ]

1 голос
/ 11 января 2010

Альтернативный подход - добавить атрибуты WCF (DataContractAttribute и т. Д.) И построить с использованием сборок .NET 3.0.

Когда вы запускаете приложение в .NET 2.0, наличие атрибутов из сборки, недоступной во время выполнения, обычно не вызывает проблем.

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

0 голосов
/ 11 января 2010

Вы можете достичь своей цели с помощью генерации кода или шаблонов T4, доступных в visual studio. С другой стороны, я не уверен, возможно ли настроить файлы проекта Visual Studio с помощью T4. Другой возможный минус - более утомительная отладка сценариев T4, чем простые cs-файлы.

...