我有一堂简单的课:
[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>?