Silverlight域服务-如何拥有一个[Invoke]操作



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

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

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

一旦我放弃了这个属性,它就会按预期编译并执行,但是这个hack让我非常恼火。

我做希望使用[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;
    }
}

我要把这个留给你…我还有另一个项目,它具有具有单个[Invoke]操作的自定义DomainServices,并且编译得很好。我无论如何也弄不明白为什么一个比另一个更容易编译。

你试过这样暴露用户吗?

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

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

中查找。

相关内容

  • 没有找到相关文章

最新更新