我正在使用setter属性创建我的应用程序,例如
public interface IUserRegistrationView
{
string DisplayName { set; }
string EmailAddress { set; }
}
但我不确定这是不是一个好方法......
也许我应该在Presenter类上创建一个Model属性?
你有什么建议?
谢谢!
答案 0 :(得分:2)
您正在做的事情将完成工作,但仅限设置属性是一种气味。你的setter,没有getter,本质上是方法伪装成属性,工作但没有多少意义。
首先,因为视图没有理由知道有关演示者的任何内容,所以没有理由创建演示者并将其注入其中。相反,在组合根处创建具体视图,然后在具有视图构造函数的具体呈现器中注入。然后,演示者可以监听视图界面中定义的事件,以便演示者和视图尽可能松散耦合。
第二次,我会将setter 属性更改为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);
}
答案 1 :(得分:0)
如果您打算以通常的方式使用此接口,而其他类可以使用它,那么它是更好的方法。如果您专门创建接口,那么在presenter类中创建属性不是一个好方法。 根据这个IUserRegistrationView,我建议在业务逻辑层中创建这些属性,并从presenter层设置这些属性。