Вот краткий обзор моего кода, который представляет собой умеренно сложный графический интерфейс WinForms.
Контекстом зависимостей является шаблон представления представления модели.
public class StatSyncherFormView : Form, IView
{ ... }
public class Presenter
{
// Here is the member I made public
public readonly IView view;
public Presenter(IView view)
{
this.view = view;
}
}
static void Main()
{
IView view = new View();
Presenter presenter = new Presenter(view);
// Here is where I'm accessing the public member
Application.Run((Form)p.view);
}
1) Мне нравится тот факт, что представление устанавливается только конструктором и не будет изменено после. Я чувствую себя лучше в контексте многопоточной разработки GUI.
2) С public View {get; private set;}
тогда я проигрываю (неизменность?).
3) С private readonly IView view
мне также нужен public View {get {return view;}}
, который кажется (для меня, по крайней мере, кто-то может сказать мне иначе) излишним.
Мой вопрос: я чувствую, что (3) это единственный способ избежать использования публичного участника, но в этом случае я не понимаю выгоды.
Я понимаю, что это мелочи, поэтому заранее спасибо всем, кто нашел время, чтобы дать мне совет по этому поводу.