0

我有一个三层架构。顶层是我的 GUI,第二层是我的业务类。GUI 上有许多复选框(+20 项)和一个“开始”按钮可用。如果用户单击按钮,我想通过构造函数将复选框的状态移交给业务对象。

通过 aList<Checkbox>不是一种合适的方式,解决方案应该灵活地进行更改。此外,我需要能够识别业务层上的复选框状态。是否有解决此问题的常见可能性?

这是我的问题的一个例子:

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();

        for (int i = 0; i < 20; i++)
        {
            flowLayoutPanel1.Controls.Add(CreateCheckbox(i));
        }

        var button = new Button();
        button.Name = "StartButton";
        button.Text = "Start";
        button.Click += new EventHandler(button_Click);

        flowLayoutPanel1.Controls.Add(button);
    }

    private void button_Click(object sender, EventArgs e)
    {
        var businessObject 
           = new BusinessClass(/*How to handover the checkbox status*/);
    }

    private CheckBox CreateCheckbox(int index)
    {
        var checkBox = new CheckBox();
        checkBox.Name = "checkBox" + index;
        checkBox.Text = "checkBox" + index;

        return checkBox;
    }
}

在此处输入图像描述

4

1 回答 1

1

一种方法是创建一个自定义接口,您可以在其中包含一个 GetStatus() 方法。

IStatus
{
    bool GetStatus();
}

然后您可以创建另一个类并将其命名为从 IStatus 继承的 Status,您可以在构造函数中传递 IStatus 列表,这个概念称为依赖倒置

Status : IStatus
{
      bool Status {get;set;}
      bool GetStatus()
      {
           return Status;
      }
}

现在您所要做的就是将一个List传递给您的构造函数。这使您可以灵活地稍后从 UI 层传递有关任何类型控件的信息。

BusinessLayer(List<IStatus> statusObjects)
{

}

您所要做的就是创建继承IStatus并传递它的自定义类,您的BusinessLayer逻辑永远不会改变。

于 2017-08-16T05:16:27.160 回答