C# 复杂的用户界面->;MVC模式
我读了很多关于MVC/MVP模式的书。。。。我有一个简单的问题…如果你有一个包含大量控件的视图…比如说10个文本框和10个复选框…等等。。。我是否需要在IView界面中指定每个属性和事件?…绝对不是这样。 IView接口将定义一组可由业务层访问的契约/方法(包括属性)。 在这样的界面中暴露控件是完全错误的:C# 复杂的用户界面->;MVC模式,c#,model-view-controller,C#,Model View Controller,我读了很多关于MVC/MVP模式的书。。。。我有一个简单的问题…如果你有一个包含大量控件的视图…比如说10个文本框和10个复选框…等等。。。我是否需要在IView界面中指定每个属性和事件?…绝对不是这样。 IView接口将定义一组可由业务层访问的契约/方法(包括属性)。 在这样的界面中暴露控件是完全错误的: public interface IView { TextBox UserNameTextBox{get;set;} } 您不应该以这种方式定义接口。这真是一个糟糕的编程。 您应该公
public interface IView
{
TextBox UserNameTextBox{get;set;}
}
您不应该以这种方式定义接口。这真是一个糟糕的编程。
您应该公开一些UI层将实现的契约。
例如
您可以在winform和webform上实现此接口
同样,您也不应该在接口(契约)中公开UI的知识。
让我们假设一个场景,您必须在UI上显示Employee对象的信息。
您应该通过此接口将Employee对象传递给UI,UI将负责表示此Employee对象的方式。你的BL不应该为n个文本框和复选框而烦恼
public class Employee
{
//first name
//last name
//is manager
//is teamleader
//address
}
public interface IEmployeeView
{
void SetEmployee(Employee employee);
}
public partial class EmployeeForm:WinForm,IEmployeeView
{
public void SetEmployee(Employee employee)
{
ENameTextBox.Text = employee.FirstName+" "+employee.LastName;
}
}
public class Employee
{
//first name
//last name
//is manager
//is teamleader
//address
}
public interface IEmployeeView
{
void SetEmployee(Employee employee);
}
public partial class EmployeeForm:WinForm,IEmployeeView
{
public void SetEmployee(Employee employee)
{
ENameTextBox.Text = employee.FirstName+" "+employee.LastName;
}
}