将多个Checkbox的状态交给业务层的常用方式

Common way to handover the status of multiple Checkboxes to Business-layer

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

传递 List<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;
    }
}

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

IStatus
{
    bool GetStatus();
}

然后你可以创建另一个 class 并调用它继承自 IStatus 的状态,你可以在构造函数中传递一个 IStatus 列表,这个概念被称为 依赖倒置.

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

现在您所要做的就是将 List 传递到您的 constructor.This 中,这样您就可以在以后灵活地传递来自 [=33] 的任何类型控件的信息=]层.

BusinessLayer(List<IStatus> statusObjects)
{

}

您所要做的就是创建继承 IStatuscustom classes 并传递它,您的 BusinessLayer逻辑永远不会改变。