Предполагая, что вторая часть кода является видимой, есть проблема с вашей реализацией шаблона MVP.
В вашем проекте и презентатор, и представление знают друг о друге (Presenter принимает представление в своем конструкторе, а представление устанавливает его выступающего в OnInit).
Это проблема, потому что вы используете MVP для разделения представления и презентатора, но этот дизайн делает их тесно связанными. Ваш докладчик не должен знать о вашем представлении, поэтому вы можете удалить параметр IProductEditorView из конструктора докладчиков.
Затем вам нужно изменить свой метод сохранения следующим образом:
private void Save(Product product)
{
try
{
product.Save();
}
catch (Exception ex)
{
System.Diagnostics.Debug.WriteLine(ex.Message);
throw;
}
}
И, на ваш взгляд, когда вам нужно сохранить продукт, подготовьте его и передайте докладчику:
private btnSaveProduct_Click(object sender, EventArgs e)
{
Product product;
product.Description = txtDescription.Text;
// Set other properties or the product
this.mPresenter.Save(product);
}
OnInit вашего взгляда остается прежним.