То, что вы делаете, выполнит работу, но свойства только для набора - это запах. Ваши сеттеры, без геттеров, по сути являются методами , замаскированными под свойства, которые работают , но не имеют большого смысла .
Сначала , поскольку у представления нет никаких оснований вообще ничего не знать о докладчике, у него нет причин создавать докладчика и внедрять его в него. Вместо этого создайте конкретный вид в корне композиции, затем в него вставят конкретный презентатор с конструктором представления. Затем докладчик может прослушивать события, определенные в интерфейсе представления, чтобы докладчик и представление были как можно слабее связаны.
Второй , я бы изменил свойства сеттера на SetDisplayName
и SetEmailAddress
методы, но только если презентатор может обновлять представление после показа, а не только отображения статические данные. В противном случае я бы удалил их полностью. Помните, что вероятно YAGNI .
Третий , мой основной способ передачи начальных данных для отображения в представлении был бы таким, используя метод представления Show
:
public class UserRegistrationInfo
{
string DisplayName { get; set; }
string EmailAddress { get; set; }
}
public interface IUserRegistrationView
{
void SetDisplayName(string name);
void SetEmailAddress(string name);
// ... events for the presenter to hook into.
void Show(UserRegistrationInfo info);
}