Я пытаюсь использовать класс Generic DataContract, чтобы мне не приходилось реализовывать несколько типов для коллекции различных объектов.
Exp:
У меня есть объект Profile, который содержит коллекцию объектов.
Итак, я хочу иметь один Profile<Foo>
и Profile<Foo1>
, где профиль содержит коллекцию объектов Foo или Foo1.
Я читал, что WCF не поддерживает универсальные классы, и на самом деле я получаю следующую ошибку.
Type 'GL.RequestResponse.ProfileResponse
1 [T] 'нельзя экспортировать как тип схемы, потому что это открытый универсальный тип.Вы можете экспортировать универсальный тип, только если все его универсальные типы параметров являются фактическими типами.
Теперь ProfileResponse - это объект Profile, который я пытаюсь использовать.
Теперь на моем хосте я делаю следующее.:
ServiceConfig(typeof(ProfileHandler<EducationResponse>).Assembly,
typeof(ProfileRequest).Assembly,
typeof(Container)).Initialize();
Это определение обработчика с помощью контракта данных.
public class ProfileHandler<T> : RequestHandler<ProfileRequest,
ProfileResponse<T>>
Контейнер использует Windsor Container для регистрации объектов.
Регистрация работает нормально, но после того, как я инстанцировал Service Host для процессора WCF и вызвал Open Method хоста, я получаю вышеуказанную ошибку.
Неужели я не могу написать общий ответ на wcf с agatha?Похоже на такую трату времени определять класс контейнера Profile для каждого типа, содержащегося в этой коллекции.
спасибо.