Silverlight域服务 - 如何进行单个[Invoke]操作

时间:2011-04-18 19:08:08

标签: .net silverlight silverlight-4.0 wcf-ria-services domainservices

我有一个自定义域服务,其中一个[Invoke]操作返回一个User对象列表。

为了让它编译,我必须在属性中突出显示User对象(在下面突出显示为'DONOTUSE')或[Invoke]操作之外的方法,否则我遇到以下编译时错误:

  

名为“GetUsers”的操作不符合所需的签名。返回类型必须是实体或复杂类型,实体或复杂类型的集合,或者是预定义的可序列化类型之一。

一旦我把这个属性收起来,它就会按照预期进行编译和执行,但黑客会惹恼我。

希望使用[查询]属性,所以请不要建议我这样做。我这样说是因为如果我切换到[查询]它编译得很好,但是,我不想处理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 个答案:

答案 0 :(得分:2)

您是否尝试过这样的用户曝光?

IQueryable<User> GetUsers() { throw new NotImplementedException(); }

这是强制WCF Ria代码生成器公开您的实体客户端的一种方法。您也可以尝试使用共享代码,Class.shared.cs,在WCF Ria docs中查找