我的应用中的每个业务对象都有抽象类( BO ) 还有父(通用)集合来存储所有BO(名为 BOC - 业务对象集合)
我想要存档的是创建通用方法iniside BOC类似于:
public T GetBusinessObject (lambda_criteria)
所以我可以将此方法称为:
Employee emp = BOC.GetBusinessObject( Employee.ID=123 )
方法应将BO符合指定的lambda标准
有关如何存档的提示吗?
答案 0 :(得分:1)
假设你的BOC在内部继承或使用通用列表,那就不太难了:
T GetBusinesObject<T>( Func<T, bool> predicate )
{
return this.FirstOrDefault( predicate );
}
答案 1 :(得分:1)
像
这样的东西T GetBusinessObject<T>(Predicate<T> constraint) where T : BO
然后调用
GetBusinessObject<Employee>( e => e.ID = 123 )
也许?
答案 2 :(得分:1)
如果这是一个通用集合,那么调用者应该已经(通过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);
那是吗?