Определенно не так.
Ваш интерфейс IView определит набор контрактов / методов (он включает в себя свойства), к которым может обращаться ваш бизнес-уровень.
Абсолютно неправильно выставлять ваш контроль в интерфейсе так:
public interface IView
{
TextBox UserNameTextBox{get;set;}
}
Вы не должны иметь интерфейсы, определенные таким образом. Это действительно плохое программирование.
Скорее вы должны выставить некоторые контракты, которые будет реализовывать ваш уровень пользовательского интерфейса.
Э.Г.
public interface IView
{
public void SetUserName(string Text);
}
Вы можете реализовать этот интерфейс на winform, а также на webform.
Аналогично, вы также не должны предоставлять знания интерфейса в интерфейсе (контракт).
Предположим, что вы должны отобразить информацию об объекте Employee в пользовательском интерфейсе.
Вы должны передать объект Employee в пользовательский интерфейс через этот интерфейс, и пользователь позаботится о способе представления этого объекта Employee.
Ваш BL никогда не должен беспокоиться о количестве текстовых ящиков и флажков.
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;
}
}