C# 如何使用Func参数公开web方法?

C# 如何使用Func参数公开web方法?,c#,web-services,asmx,predicate,func,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(); } [WebMethod] 公共列表读取实体(Func谓

我想知道我是否可以公开一个带有
Func
参数的web方法

[WebMethod]
public List<Entity> ReadEntities(Func<Entity, bool> predicate)
{
    using (var entities = new GwEntities())
        return entities.Entities.Where(predicate).ToList();
}
[WebMethod]
公共列表读取实体(Func谓词)
{
使用(var entities=new GwEntities())
返回entities.entities.Where(谓词).ToList();
}
当我尝试更新web引用时,Visual Studio出现了一个异常:

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


有什么解决办法吗

您不能像这样序列化自己的代码。序列化程序应该从哪里开始,在哪里停止?它是否应该只传输方法的代码以及从方法中调用的所有程序集?LINQtoObjects做了类似的事情。你应该看看。这些代码可以通过网络进行序列化。

您不能像这样序列化自己的代码。序列化程序应该从哪里开始,在哪里停止?它是否应该只传输方法的代码以及从方法中调用的所有程序集?LINQtoObjects做了类似的事情。你应该看看。这些可以通过网络进行序列化。

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

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

不行。如果您认为func参数是对调用方代码的引用,那么您希望服务器如何看到该代码?

不行。如果您认为func参数是对调用方代码的引用,那么您希望服务器如何看到该代码?

谓词,如果它支持searialization?我不确定……@Srinivas:它也不能序列化(谓词只是函数的快捷方式。您希望web服务的调用者能够传入任意可执行代码吗?您能想出这可能是一个坏主意的原因吗?请记住,客户端甚至不需要是.NET;这永远不会起作用。您需要一种新策略。谓词,如果它支持searialization?我不确定…@Srinivas:i)也不能序列化(谓词只是一种快捷方式,您希望web服务的调用者能够传入任意可执行代码吗?您能想到这可能是一个坏主意的原因吗?请记住,客户端甚至不需要是.NET;这永远不会起作用。您需要一种新的策略。还有一个问题正在讨论:还有一个问题是dis诅咒: