2016-08-26 9 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) », при этом подразумевается часть« События ». Это 100% -ный трюк компилятора - код IL, который генерирует компилятор, точно такой же. Компилятор берет «цель» вызова, т. Е. «FirstArg», и возвращает его в качестве первого параметра в вызов метода «Events.Foo». – dasblinkenlight

-3

Да, это как вы называете статические методы в статическом классе. Если размер файла кода был ваш единственный интерес, я пошел бы только с созданием нового и использованием partial class

+0

Это не ответ. –

+0

лучше, чем поощрять использование статического класса, потому что размер файла слишком велик. –