У меня есть пользовательская служба домена с одной операцией [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] операциями, и он прекрасно компилируется. Я не могу при всей жизни понять, почему один компилируется над другим.
UPDATE
См. Комментарии в выбранном ответе ниже.