Ответ 1
У меня была такая же проблема в службе WCF, и я сделал следующий "менее отвратительный" взлом для работы с известным типом ограничений. Я излагаю только для того, чтобы показать альтернативные варианты, это зависит от вас, чтобы решить, лучше ли это или нет.
-
При запуске службы загрузите через отражение типы, которые вы хотите открыть. Например. если все ваши объекты, связанные с WCF, получены из общей абстрактной базы (или более), загрузите все типы из сборки, в которую они должны быть расположены. Кэшируйте эти типы статически по соображениям производительности.
-
Создайте статический метод, который возвращает указанные кешированные типы со следующей подписью:
public static IEnumerable<Type> GetKnownTypes(ICustomAttributeProvider provider)
-
Отметьте интерфейс WCF следующим атрибутом
[ServiceKnownType("GetKnownTypes", typeof(StaticClassThatCachesTypes))]
Это должно дать вам автоматическое выявление всех типов, которые являются или будет, полученным из базового класса (ов) по вашему выбору, если будущий разработчик помещает их в правильные сборка.