Я судил MVP, и это, кажется, работает отлично с формами окон также. Эта книга имеет пример форм окон с шаблоном MVP (демонстрационное приложение платежной ведомости). Приложение не то, что комплекс, но даст Вам общее представление о том, как пойти о создании его.
Гибкие Принципы, Шаблоны и Методы в C#...
можно получить исходный код в РЕДАКТИРОВАНИЕ Исходного кода
существует два изменения MVP шаблона (a) Passive представления и (b) наблюдения контроллера
Для сложных сценариев привязки данных я предпочитаю идти с шаблоном контроллера Наблюдения. В наблюдении шаблона контроллера ответственность за привязку данных лежат на представлении. Так, для treeview/datagrid это должно быть в соответствующих представлениях, только просмотреть агностическую логику, должен, шел дальше предъявителю.
я рекомендую взглянуть на следующую платформу MVP MVC# - платформа MVP
не идет именем (это - платформа MVP).
Простое видео MVP winforms Winforms - MVP
пример контакта с MVP выпадающего списка - DropDownList
Ниже фрагмент кода.... не протестированный, непосредственно введенный от мысли....
public interface IYourView
{
void BindTree(Model model);
}
public class YourView : System.Windows.Forms, IYourView
{
private Presenter presenter;
public YourView()
{
presenter = new YourPresenter(this);
}
public override OnLoad()
{
presenter.OnLoad();
}
public void BindTree(Model model)
{
// Binding logic goes here....
}
}
public class YourPresenter
{
private IYourView view;
public YourPresenter(IYourView view)
{
this.view = view;
}
public void OnLoad()
{
// Get data from service.... or whatever soruce
Model model = service.GetData(...);
view.BindTree(model);
}
}
Я думаю закон Постела ( «будь консервативным в том, что ты делаешь, будь либеральным в том, что ты принимаешь от других») применимо и здесь. Не пишите свои тесты так, чтобы они требовали посимвольного сопоставления для того, чтобы реализация printf ()
работала.
Вместо этого сделайте это на более высоком уровне; проанализировать текст, выводимый с помощью printf ()
, на ожидаемый тип данных и сравнить со значением этого типа.
Т.е., если вы печатаете «2.25», проанализируйте текст (используя strtod ()
или эквивалент) и сравните с действительным числом 2,25, а не буквальной текстовой строкой «2,25».
Вам следует написать свой собственный набор тестов, охватывающий проблемы, которые вас беспокоят. Очень просто вызвать printf 100 раз с разными входными данными, а на выходе вы получите простой текст, так что легко сравнить с ожидаемым результатом.
Я бы порекомендовал протестировать его следующим образом: используйте sprintf (), чтобы создать несколько шаблонов тестирования и сравнить их с вашим «правильным».
Я сделал что-то подобное с помощью fprintf (просто чтобы избежать кеширования в нашей встроенной системе).
Я думаю, что результаты для printf и sprintf не будут отличаться: алгоритм форматирования одинаковый.