Мне интересно, почему это работает?
Например, у меня есть некоторый класс-исполнитель, который выглядит так:
public class Executor
{
public void Execute(Action action)
{
action();
}
}
Теперь у меня есть некоторый должен быть выполнен класс, который выглядит так:
public class NeedToBeExecuted
{
public void Invoke()
{
Executor executor = new Executor();
executor.Execute(DoSomething);
}
private void DoSomething()
{
// do stuff private
}
}
Мой вопрос: почему это работа, я передаю частный метод в другой класс?
Разве это не проблема инкапсуляции?
Action
. Хотя это и не совсем то же самое, подумайте, если бы вы передавали массив private или некоторый экземпляр класса в качестве параметра другому методу. В этом нет ничего плохого.DoSomething
также сможет получить доступ к закрытым переменным изNeedToBeExecuted
, которые он использует из-за замыканий. - person Oscar Mederos   schedule 23.03.2013