У меня был класс, в котором было много методов:
public class MyClass {
public bool checkConditions() {
return checkCondition1() &&
checkCondition2() &&
checkCondition3();
}
...conditions methods
public void DoProcess() {
FirstPartOfProcess();
SecondPartOfProcess();
ThirdPartOfProcess();
}
...process methods
}
Я выделил две «жизненно важные» области работы и решил выделить эти методы в собственные классы:
public class MyClass {
private readonly MyClassConditions _conditions = new ...;
private readonly MyClassProcessExecution = new ...;
public bool checkConditions() {
return _conditions.checkConditions();
}
public void DoProcess() {
_process.DoProcess();
}
}
В Java я бы определил MyClassConditions
и MyClassProcessExecution
как package protected
, но я не могу этого сделать в C #.
Как бы вы это сделали на C #?
Установить оба класса как внутренние классы MyClass?
У меня есть 2 варианта: либо я определяю их внутри MyClass
, имея все в одном файле, что выглядит запутанно и некрасиво, либо я могу определить MyClass
как partial class
, имея один файл для MyClass
, другой для MyClassConditions
и другой для MyClassProcessExecution
.
Определяя их как внутренние?
Мне не очень нравится этот внутренний модификатор, поскольку я не считаю, что эти классы вообще добавляют какое-либо значение для остальной части моей программы / сборки, и я хотел бы скрыть их, если это возможно. Не похоже, что они будут полезны / повторно использованы в любой другой части программы.
Сделать их общедоступными?
Не понимаю почему, но я оставил этот вариант здесь.
Любой другой?
Назови это!
Спасибо