1

アプリ内のビジネスオブジェクトごとに抽象クラスがあります(BO)。また、すべてのBOを格納するための親(ジェネリック)コレクションがあります(BOCという名前-ビジネスオブジェクトコレクション) 。

私がアーカイブしたいのは、BOC内で次のようなユニバーサルメソッドを作成することです。

public  T GetBusinessObject (lambda_criteria)

したがって、このメソッドを次のように呼び出すことができます。

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

そして、メソッドは、指定されたラムダ基準に一致するBOを返す必要があります

それをアーカイブする方法のヒントはありますか?

4

3 に答える 3

1

BOCが一般的なリストを内部的に継承または使用すると仮定すると、それほど難しくはありません。

T GetBusinesObject<T>( Func<T, bool> predicate )
{
    return this.FirstOrDefault( predicate );
}
于 2009-05-07T08:48:02.633 に答える
1

何かのようなもの

T GetBusinessObject<T>(Predicate<T> constraint) where T : BO

そして、のように呼ばれます

GetBusinessObject<Employee>( e => e.ID = 123 )

多分?

于 2009-05-07T08:50:05.233 に答える
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);

それは?

于 2009-05-07T08:51:47.990 に答える