如何使用Func参数公开Web方法?

时间:2011-04-25 10:10:17

标签: c# web-services asmx predicate func

我想知道我是否可以使用Func参数公开Web方法!

[WebMethod]
public List<Entity> ReadEntities(Func<Entity, bool> predicate)
{
    using (var entities = new GwEntities())
        return entities.Entities.Where(predicate).ToList();
}

当我尝试更新Web引用时,Visual Studio中有一个例外:

  

System.Func [GwModel.Entity,SystemBoolean] caonnot被序列化,因为它没有无参数构造函数

请解决任何问题!

3 个答案:

答案 0 :(得分:4)

您不能像这样序列化自己的代码。序列化器应该从哪里开始,哪里停止?它是否只传输方法的代码和从方法中调用的所有程序集? LINQ to objects做了类似的事情。你应该看一下Expressions。这些可以通过电线进行序列化。

答案 1 :(得分:2)

没有办法。如果您将func参数视为对调用方的某些代码的引用,您希望服务器如何能够看到该代码?

答案 2 :(得分:1)

我认为您可能无法使用传统的asp.net Web服务实现客户端回调。你可以为此选择WCF。 KickStart