2011-01-17 16 views
0

私はRunメソッドを持つレポートインターフェイスを持っています。c#DAL - ビジネスオブジェクトのインターフェイス

このインターフェイスを実装し、それぞれ独自の種類のレポートを実行し、異なるテーブルからデータを取得するさまざまなタイプのレポートがあります。

それぞれのレポートでは、独自のデータコンテキストを使用して、Business Objectsにデータを取り込み、配列として返されるデータを取得します(少なくともリストのようなものを返すことはできますが、リストのタイプを定義すると少し難しくなります)。

返信は、返されたデータのプロパティを見つけるために使用されます。

これを十分に説明していただければ幸いです。

これを行うには良い方法がありますか?リクエストにより、

public interface IReport 
{ 
    int CustomerID { get; set; } 

    Array Run(); 
} 

public class BasicReport : IReport 
{ 
    public int CustomerID { get; set; } 

    public virtual Array Run() 
    { 
     Array result = null; 
     using (BasicReportsDataContext brdc = new BasicReportsDataContext()) 
     { 
      var queryResult = from j in brdc.Jobs 
           where j.CustomerID == CustomerID 
           select new JobRecord 
           { 
            JobNumber = j.JobNumber, 
            CustomerName = c.CustomerName 
           }; 

      result = queryResult.ToArray(); 
     } 
    } 
} 

他のクラスは、データに対するforeachをして、フィールド名と値を見つけるためにリフレクションを使用してXMLファイルにすることを置きます。

すべてのことを意味するように、私はC#の私の限られた理解が私にはまだ見えないように、もっと良い方法があると思っています。

+2

それから、あなたの「レポーター」クラスを継承得意アクセサ

  • あなたは例として示したことができますレポートインターフェイスとその消費方法* –

  • +0

    すべてのインターフェイスには本当にCustomerID getter/setterとArray Run()メソッドがあります。プラグインシステムの一部として新しいレポートを生成できるようにするというアイディアでした。 – m4rc

    +0

    Matthewが何を意味したかは、ここにコードを投稿することでした。いくつかの実装とそれをどのように消費したいのかというあなたの 'インターフェース' – decyclone

    答えて

    0

    私が最初に自分自身に尋ねると、本当ににインターフェイスが必要です。それを実装しているクラスが本当に(報告書の種類だけでなく)が異なる場合もそうです。仮想を持つ親抽象を書く

    • レポート
    • : ない場合、すなわち、すべて実装するクラスは、基本的には「記者」されている、[はい、これを行うために、より便利な方法があるあります方法を実行し、
    +0

    それは私のクラスの1つを取り除くでしょう - ビジネスオブジェクトのアイデア?それぞれのレポートが異なるので、異なるビジネスオブジェクトが返されます。これらは配列になります。次に、プロパティなどを取得するためにリフレクションを使用する必要があります。これを行うにはより良い方法がありますか? – m4rc

    +0

    @ m4rcなぜリフレクションを使用するのですか?各レポートは、既知のビジネスオブジェクトのセットに基づいています。 –

    関連する問題