Доменная служба Silverlight - Как выполнить одну операцию [Invoke]
У меня есть пользовательская служба домена с одной операцией [Invoke], которая возвращает список объектов User.
Чтобы получить его для компиляции, я должен выделить объект User в свойстве (выделенном как "DONOTUSE" ниже) или методе вне операции [Invoke], в противном случае я столкнулся со следующей ошибкой времени компиляции:
Операция с именем "GetUsers" не соответствует требуемой подписи. Возвращаемые типы должны быть сущностью или сложным типом, коллекцией сущностей или сложных типов или одним из предопределенных сериализуемых типов.
Как только я вытесняю свойство, оно компилируется и исполняется, как и было задумано, но взлом раздражает меня.
Я не хочу использовать атрибут [Query], поэтому, пожалуйста, не предлагайте мне это делать. Я говорю это потому, что если я переключаюсь на [Query], он прекрасно компилируется, однако я не хочу иметь дело с результирующим набором EntityQuery или его отложенным выполнением.
Благодаря тому, как у меня есть спроектированная архитектура, потребности варианта использования в этом примере и документация MSDN, [Invoke] является наиболее подходящим средством.
[EnableClientAccess()]
public class UserDomainService : DomainService
{
private IUserService userService;
public UserDomainService(IUserService service)
{
userService = service;
}
[Invoke, RequiresAuthentication]
public List<User> GetUsers()
{
return userService.GetUsers();
}
//HOW CAN I REMOVE THE FOLLOWING AND STILL COMPILE?
public User DONOTUSE()
{
return null;
}
}
Я оставлю вас с этим... У меня есть другой проект, в котором есть пользовательские DomainServices с единственными операциями [Invoke], и он прекрасно компилируется. Я не могу понять, почему один компилирует другой.
ОБНОВИТЬ
Смотрите комментарии в выбранном ответе ниже.
1 ответ
Вы пытались разоблачить таких пользователей?
IQueryable<User> GetUsers() { throw new NotImplementedException(); }
Это способ заставить генератор кода WCF Ria раскрыть вашу сущность на стороне клиента. Вы также можете попробовать использовать общий код Class.shared.cs, посмотрите его в документах WCF Ria.