プロパティとしてクエリパラメータを含むサンプルクエリクラスがあります。このクラスはWCF通信に使用され、サーバー側で適切なフィルター式が生成されます。
サンプルコードはどこにありますか。
internal interface IExpressionBuilder<T>
{
Func<T, bool> Build();
}
これがサンプル実装です
[DataContract]
public class PersonQuery : IExpressionBuilder<Person>
{
[DataMember]
public string IdCardNumber;
[DataMember]
public string FirstName { get; set; }
[DataMember]
public string LastName { get; set; }
[DataMember]
public DateTime? BirthDate { get; set; }
#region Implementation of IExpressionBuilder<Data>
public Func<Person, bool> Build()
{
throw new NotImplementedException();
}
#endregion
}
利用方法:
publi List<Person> GetPersonByQuery(PersonQuery query)
{
(using context = new SampleContext())
{
return List<Person> foundPersons = context.people.where(query.build());
}
}
アイデアは非常にサンプルであることがわかりますが、私の質問は、build()メソッドが呼び出されたときに、PersonQueryプロパティが設定されている場合、それらを式に動的に含める方法です。