2016-08-26 4 views
1

これは基本的な質問ですが、このクラスを設定する方法はわかりません。私は大きすぎるC#コードファイルを持っていたので、小さなコードに分割してみたかったのです。クラスの使い方とデザインが分かれています

私は3つの方法を取り出して、イベントと呼ばれるこのクラスに入れました。イベント。今

この新しいクラスのメソッドを必要と私メインクラスが、私はちょうどこのようにそれを呼ぶのですか?

私はこれを試してみました。しかし、私は実際にこれを行うことでスペースを節約していないようです。

IEnumerable<EngineSchema> thisWeeksParts = 
          Events.WeeklyPartsList(engineCat, startDay, endDay) 

ありがとうございます!ここで

は、新たなクラスです:

public static class Events 
{ 
    public static IEnumerable<EngineSchema> WeeklyPartsList(IEnumerable<EngineClass> engineCategory, DateTime startDay, 
     DateTime endDay) 
    { 
     var EngineParts = 
      engineCategory.SelectMany(e => e.Pages) 
       .Where(c => c.StartDateTime >= startDay & c.EndDateTime <= endDay); 
     return EngineParts; 
    } 

    public static IEnumerable<EngineClass> ClassOfEngine(int EngineSpecGroupID) 
    { 
     return Repository.Query() 
      .Where(c => c.VehicleGroup.Any(cg => searchParts.Contains(EngineSpecGroupID))); 
    } 

    public static IEnumerable<EngineSchema> GetEngineList(int engineYear, DateTime startDate, DateTime endDate) 
    { 
     return WeeklyPartsList(ClassOfEngine(engineYear), startDate, endDate); 
    } 
} 
+1

私はそれを得ることはありません。どうしたの?あなたはそれを試してみましたか?それとも、試してみる前にうまくいくか尋ねているだけですか? –

+0

私はそれを試して、それは動作しました。しかし、それは扱いにくいようで、私はこれを行うことでスペース/時間を節約しているかどうかはわかりません。 – SkyeBoniwell

+1

正直なところ、これはうまくいくはずです。コードを別々の部分に分割すると、各ファイルの混乱を軽減し、システムの各部分が何をしているのか、各部分の責任を明確にすることができます。 –

答えて

1

を使用して行っているでしょうこの?次のように

public static IEnumerable<EngineSchema> WeeklyPartsList(this IEnumerable<EngineClass> engineCategory, DateTime startDay, DateTime endDay) ... 
//              ^^^^ 

は今、あなたはあなたのメソッドを呼び出すことができます[...]

「純粋な」静的な構文は正常に動作しますが、拡張構文に切り替えるには、わずかにより便利なことがあります。

IEnumerable<EngineSchema> thisWeeksParts = engineCat.WeeklyPartsList(startDay, endDay); 

または

foreach (var part in Events.ClassOfEngine(123).WeeklyPartsList(startDay, endDay)) { 
    ... 
} 
+0

待って、どうしたの?このメソッドは、IEnumerable engineCategoryをパラメータとして渡す必要があります。 – SkyeBoniwell

+0

@SkyeBoniwell最初のパラメータの前に 'this'を追加すると' Events.Foo(firstArg、secondArg) 'と' firstArg.Foo(secondArg) 'の間で' Events'部分が暗示されます。これは100%コンパイラのトリックです。コンパイラが生成するILコードはまったく同じです。コンパイラは、呼び出しの「ターゲット」、すなわち、「firstArg」をとり、それを最初のパラメータとして「Events.Foo」メソッドの呼び出しに戻します。 – dasblinkenlight

-3

はいそれはあなたが静的クラス内の静的メソッドを呼び出す方法です。コードファイルのサイズがあなたの唯一の懸念だった場合、私はちょうど私のメインクラスは、この新しいクラスのメソッドを必要とする場合、私はちょうどのようにそれを呼び出すか、新しいものを作成し、partial class

+0

これは無回答です。 –

+0

は、ファイルサイズが大きすぎるために静的クラスの使用を推奨するよりも優れています。 –

関連する問題