2009-06-07 15 views
0

私は今NHibernateと私のドメインモデルで困っています。私は頭の中で素敵なAPIを想像していますが、私は本当に難しい時を過ごしています。私が達成しようとしているものの例を次に示します:Foreachループの意味をなんとかしていますか? :P私は自分のクラスとある種の流暢なインターフェースを作ろうとしているような気がします。私は持続性のためにNHibernateを使用していますので、このようなことがありますか、それとももっと単純にする必要がありますか?NHibernateのトラバーサルの質問 - 流暢なインターフェイスを作成する

+0

我々はどうもありがとうございまし –

答えて

2

TripがIQueryableであると仮定すると、流暢なインターフェイスはLinqクエリと拡張メソッドを使ってかなり簡単に書くことができます。注:次の仮想コードはテストされていません。

public static class MyExtensions 
{ 
    public static IQueryable<Person> People(this IQueryable<Person> source) 
    { 
     return from person in source 
       select person; 
    } 

    public static IQueryable<Person> Crew(this IQueryable<Person> source) 
    { 
     return from person in source 
       where person.type == crewMember 
       select person; 
    } 
    public static IQueryable<Person> IsApproved(this IQueryable<Person> source) 
    { 
     return from person in source 
       where person.IsApproved == true 
       select person; 
    } 
} 

など.etc。各メソッドのパラメータリストに "this"キーワードを使用していることに注目してください。以下のようにこれは、方法は、任意のソースのIQueryableに点在によって呼び出すことができます

var crew = myPersons.Crew(); 
var approvedCrew = myPersons.Crew().IsApproved(); 

注:私は、この技術を用いて、カッコを排除する方法があるとは思いません。これを行うには、プロパティを使用する必要があり、C#は「拡張プロパティ」をサポートせず、「拡張メソッド」のみをサポートします。ここ

さらに詳しい情報:http://en.wikipedia.org/wiki/Fluent_interface

+0

の関係を見ることができるようにモデルを投稿してください!それは私が探していたものでしたが、何を呼び出すべきか分かりませんでした。拡張機能!ありがとうございました – CalebHC