我有一堂简单的课:

[DataContract]
public class Book
{
    [DataMember]
    public Int32 ID { get; set; }

    [DataMember]
    public Nullable<Int32> AuthorID { get; set; }
}

可以通过WCF服务检索,例如:
public class BookService : IBookService
    {
        IService _service;

        public BookService()
        {
            _service = new BookService();
        }

        public IEnumerable<Book> GetBooks()
        {
            var Books = _service.GetBooks();
            return Books;
        }
    }

我现在想扩展它,使其包含一个附加功能,该功能将允许LINQ查询在Book类上包含附加属性(在上面的缩减示例中未显示)。此功能(在MVC应用程序中包含并调用时起作用)是:
    public IEnumerable<Book> GetBooks(params Expression<Func<Book, object>>[] includes)
    {
        var Books = _service.GetBooks(Expression<Func<Book, object>>[]>(includes));
        return Books;
    }

但是,从WCF服务运行时,由于无法序列化,因此会生成错误:



我将DataContract/DataMember属性添加到该类中,以便可以对其进行序列化,但是我不确定允许该函数参数进行序列化需要做什么。

有人对我可以做些什么以允许在WCF服务中使用此功能有想法?

最佳答案

可能与Expression的使用有关吗?:

Why would you use Expression<Func<T>> rather than Func<T>?

09-30 17:17