Расширение библиотеки классов.NET 2.0 для использования в WCF
Мы публикуем библиотеку классов, которая должна оставаться совместимой с.NET 2.0. Однако мы также хотели бы использовать эту библиотеку классов для проектов на основе WCF.
Чтение, например, /questions/16816730/vyistavit-obekt-iz-biblioteki-klassov-s-pomoschyu-wcf поднимает подход к использованию библиотек классов 2.0 путем создания объектов DataContractSurrogate для сопоставления классов 2.0. Тем не менее, наша иерархия объектов богата и глубока, и это было бы утомительно и трудно поддерживать.
Поскольку мы контролируем исходный код, я ищу более простой подход.
Одна мысль состоит в том, чтобы добавить атрибут DataConract к исходному коду и предоставить "пустую" реализацию DataContractAttribute, когда построено решение, ориентированное на среду выполнения 2.0, и использовать реализацию System.Runtime.Serialization, когда построено решение, ориентированное на 3.0 и новее. Время автономной работы. Это может быть достигнуто путем ручной настройки ссылок между сборками.
Есть ли лучший способ реализовать этот подход?
Есть ли лучший подход?
2 ответа
Альтернативный подход заключается в добавлении атрибутов WCF (DataContractAttribute и т. Д.) И сборке с использованием сборок.NET 3.0.
Когда вы запускаете приложение в.NET 2.0, наличие атрибутов из сборки, которая недоступна во время выполнения, обычно не вызывает проблем.
(Вы получите сообщение об ошибке, если попытаетесь получить доступ к атрибутам, но этого вряд ли легко избежать).
Вы можете достичь своей цели с помощью генерации кода или шаблонов T4, доступных в visual studio. С другой стороны, я не уверен, можно ли настроить файлы проекта visual studio с помощью T4. Другой возможный минус - более утомительная отладка сценариев T4, чем простые cs-файлы.