Доменная служба 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.

Другие вопросы по тегам