Как выставить веб-метод с параметром Func? - PullRequest
1 голос
/ 25 апреля 2011

Интересно, могу ли я предоставить веб-метод с параметром Func!

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

При попытке обновить веб-ссылку у меня возникло исключение из Visual Studio, которое:

System.Func [GwModel.Entity, SystemBoolean] не может быть сериализован, поскольку у него нет конструктора без параметров

Любое решение, пожалуйста!

Ответы [ 3 ]

4 голосов
/ 25 апреля 2011

Вы не можете сериализовать свой собственный код, подобный этому. Где должен начинаться сериализатор и где останавливаться? Должен ли он передавать только код вашего метода и все сборки, которые вызываются из метода? LINQ для объектов делает что-то подобное. Вы должны взглянуть на Выражения . Их можно сериализовать через провод.

2 голосов
/ 25 апреля 2011

Не могу сделать.Если вы рассматриваете параметр func как ссылку на некоторый код на стороне вызывающего, как вы ожидаете, что сервер сможет увидеть этот код?

1 голос
/ 25 апреля 2011

Я думаю, вы не сможете реализовать обратные вызовы клиентов с помощью классических веб-сервисов asp.net.Вы можете выбрать WCF для этого. KickStart .

...