c# - 如何使过载变得更简单

标签 c# mvvm

我有一个帮助程序类,可以处理工具栏的一些方法。现在我已经创建了 5 个具有不同重载的构造函数。我的问题是,如何使这个构造函数重载更简单?我这样做的方式是有效的,但万一我需要实现 f.e. 10 个 RichTextBox,我不想为每个可能的 RichTextBox 创建重载并在方法中处理每个人。我相信有一种更简单的方法,但无论如何,我可以解决这个问题。

我尝试创建一个列表,但收到错误,因为我无法创建逻辑命名空间的列表。

    public class RichtTextBoxHelper
    {
    private RichTextBox _textBox;
    private RichTextBox _textbox2;
    private RichTextBox _textbox3;
    private RichTextBox _textbox4;
    private RichTextBox _textbox5;

    public RichtTextBoxHelper(RichTextBox textBox)
    {
        _textBox = textBox;
    }
    public RichtTextBoxHelper(RichTextBox textBox, RichTextBox textbox2)
    {
        _textBox = textBox;
        _textbox2 = textbox2;
    }

    public RichtTextBoxHelper(RichTextBox textBox, RichTextBox textbox2, RichTextBox textbox3)
    {
        _textBox = textBox;
        _textbox2 = textbox2;
        _textbox3 = textbox3;
    }

    public RichtTextBoxHelper(RichTextBox textBox, RichTextBox textbox2, RichTextBox textbox3, RichTextBox textbox4)
    {
        _textBox = textBox;
        _textbox2 = textbox2;
        _textbox3 = textbox3;
        _textbox4 = textbox4;
    }

    public RichtTextBoxHelper(RichTextBox textBox, RichTextBox textbox2, RichTextBox textbox3, RichTextBox textbox4, RichTextBox textbox5)
    {
        _textBox = textBox;
        _textbox2 = textbox2;
        _textbox3 = textbox3;
        _textbox4 = textbox4;
        _textbox5 = textbox5;
    }

    public void CutClick()
    {
        _textBox.Cut();
        _textbox2.Cut();
        _textbox3.Cut();
        _textbox4.Cut();
        _textbox5.Cut();
    }

各种方法,如剪切方法。

有没有更简单、更干净的方法来做到这一点?

最佳答案

您应该使用 RichTextBox 数组:

private RichTextBox[] textBoxes;

现在你只需要一个构造函数:

public RichtTextBoxHelper(params RichTextBox[] textBoxes) {
    this.textBoxes = textBoxes ?? throw new ArgumentNullException(nameof(textBoxes));
}

如果存在可以处理的文本框的最大数量,请检查:

public RichtTextBoxHelper(params RichTextBox[] textBoxes) {
    if (textBoxes is null)
    {
        throw new ArgumentNullException(nameof(textBoxes));
    }

    if (textBoxes.Length > maxTextBoxes) :
        throw new ArgumentException("Too many text boxes!", nameof(textBoxes))
    }
    this.textBoxes = textBoxes;
}

CutClick 方法可以很简单:

public void CutClick() {
    foreach(var textBox in textBoxes) {
        textBox.Cut();
    }
}

关于c# - 如何使过载变得更简单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57141882/

相关文章:

c# - 解码 Base64 和 Inflate Zlib 压缩 XML

c# - 如何从命令行创建 nuget packages.config 文件?

c# - 使用 MVVM 时创建 UserControl 的正确方法

c# - CommandParameter 在 MVVM 中如何工作?

c# - 多种类型的数组 C#(包括其他数组)

c# - 跨 UWP 应用和 Azure 移动服务的持久身份验证

C#方法,使用refs和outs修改变量

c# - WPF MVVM-简单登录到应用程序

c# - 为 WPF 应用程序创建加载项

wpf - TextBlock 文本的整数值 0 上的 DataTrigger 不起作用