我的应用程序中的每个业务对象都有抽象类(BO)还有父(通用)集合来存储所有 BO(名为BOC - 业务对象集合)
我想存档的是在 BOC 内部创建的通用方法,类似于:
public T GetBusinessObject (lambda_criteria)
所以我可以称这个方法类似于:
Employee emp = BOC.GetBusinessObject( Employee.ID=123 )
并且方法应返回满足指定 lambda 标准的 BO
任何提示如何存档?
我的应用程序中的每个业务对象都有抽象类(BO)还有父(通用)集合来存储所有 BO(名为BOC - 业务对象集合)
我想存档的是在 BOC 内部创建的通用方法,类似于:
public T GetBusinessObject (lambda_criteria)
所以我可以称这个方法类似于:
Employee emp = BOC.GetBusinessObject( Employee.ID=123 )
并且方法应返回满足指定 lambda 标准的 BO
任何提示如何存档?
假设您的 BOC 在内部继承或使用通用列表,这并不难:
T GetBusinesObject<T>( Func<T, bool> predicate )
{
return this.FirstOrDefault( predicate );
}
就像是
T GetBusinessObject<T>(Predicate<T> constraint) where T : BO
然后像
GetBusinessObject<Employee>( e => e.ID = 123 )
也许?
如果这是一个通用集合,那么调用者应该已经(通过 LINQ)能够使用:
BOC<Employee> boc = ...
// checks exactly 1 match, throws if no match
var emp = boc.Single(e => e.ID = 123);
// checks at most 1 match, null if no match
var emp = boc.SingleOrDefault(e => e.ID = 123);
// checks at least one match, throws if no match
var emp = boc.First(e => e.ID = 123);
// returns first match, null if no match
var emp = boc.FirstOrDefault(e => e.ID = 123);
那怎么办?