структура сущности единица работы в winforms - PullRequest
0 голосов
/ 29 марта 2012

Я нашел этот образец, но он для сети.Может ли кто-нибудь проверить этот проект?и добавьте простой пример, используя winforms (без wpf).

Исходный код

Thx

1 Ответ

2 голосов
/ 29 марта 2012

С какой проблемой вы столкнулись? В любом случае я сделал примерную (пока базовую) структуру того, как вы можете достичь этого в WinForm. Я сделал с использованием своего рода шаблона представления модели.

Прежде всего, у нас есть презентатор, который будет работать с единицей работы почти так же, как контроллер

internal class EmployeePresenter
{
    private readonly IEmployeeFormView _employeeFormView;
    private readonly IUnitOfWork _unitOfWork;

    public EmployeePresenter(IEmployeeFormView view)
    {
        _employeeFormView = view;
        _unitOfWork = new SqlUnitOfWork();
    }

    internal void GetData()
    {
        var id = 1; //parameter
        var employee = _unitOfWork.Employees.Single(e => e.Id == id);
        _employeeFormView.PopulateData(employee.Name);
    }
}

Тогда у нас есть интерфейс и форма, реализующая этот интерфейс

public interface IEmployeeFormView
{
    void PopulateData(string data);
}

public partial class EmployeeForm : Form, IEmployeeFormView
{
    private readonly EmployeePresenter _presenter;

    public EmployeeForm()
    {
        InitializeComponent();
        _presenter = new EmployeePresenter(this);
    }

    #region IEmployeeFormView Members

    public void PopulateData(string data)
    {
        txtName.Text = data; //txtName is a textbox on form
    }

    #endregion

    private void btnGet_Click(object sender, EventArgs e)
    {
        _presenter.GetData();
    }
}

Добавьте необходимую ссылку, и все готово. Возможно, это не лучший способ, но это, безусловно, способ достичь этого.

Решение загружается здесь .

Надеюсь, это поможет. Пожалуйста, не стесняйтесь обсуждать, если требуется.

...