2011-04-25 44 views
1

我不知道我是否可以用Func参数暴露一个web方法!如何使用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序列化,因为它不具有无参数构造函数

任何解决方法请!

+0

谓词,如果它支持搜索?我不确定.... – 2011-04-25 10:13:25

+0

@Srinivas:它也不是可序列化的。 :( – Homam 2011-04-25 10:19:12

+0

谓词只是Func的一个快捷方式 Zebi 2011-04-25 10:29:01

回答

4

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

+0

还有一个问题,讨论:http:// stackoverflow.com/questions/217961/serializing-and-deserializing-expression-trees-in-c – ChrisWue 2011-04-25 10:49:50

1

我想你可能无法用经典的asp.net web服务实现客户端回调。你可以为此选择WCF。 KickStart

2

不可以。如果您将func参数视为对调用方一些代码的引用,那么您如何期望服务器能够看到该代码?