Business Objects Collection中具有lambda标准的通用方法

时间:2009-05-07 08:42:35

标签: .net .net-3.5 lambda business-objects

我的应用中的每个业务对象都有抽象类( BO ) 还有父(通用)集合来存储所有BO(名为 BOC - 业务对象集合)

我想要存档的是创建通用方法iniside BOC类似于:

public  T GetBusinessObject (lambda_criteria)

所以我可以将此方法称为:

Employee emp = BOC.GetBusinessObject( Employee.ID=123 )

方法应将BO符合指定的lambda标准

有关如何存档的提示吗?

3 个答案:

答案 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);
那是吗?