在每个类中调用相同方法的最佳方法是什么

本文关键字:方法 最佳 是什么 调用 | 更新日期: 2023-09-27 17:56:42

在我的

WPF 应用的每个页面中,如果用户是否在文本框中输入有效日期,我需要有效。

有 5 页,然后是 5 种方法,我用一个小方法验证我的日期。

我想知道在每个页面/类中创建可调用的通用方法以有效我的日期的最佳解决方案/方法是什么?

public bool IsValidDate(string date)
{
    var regex = @"^(0[1-9]|[12][0-9]|3[01])[- /.](0[1-9]|1[012])[- /.](19|20)'d'd$";
    if (!string.IsNullOrEmpty(date))
    {
        var match = Regex.Match(date, regex); 
        return match.Success;
    }
    return true;
}

谢谢

在每个类中调用相同方法的最佳方法是什么

您可以创建一个包含帮助程序函数的新类,如下所示:

public static class Helper
{
    public static bool IsValidDate(string date)
    {
        var regex = @"^(0[1-9]|[12][0-9]|3[01])[- /.](0[1-9]|1[012])[- /.](19|20)'d'd$";
        if (!string.IsNullOrEmpty(date))
        {
            var match = Regex.Match(date, regex); 
            return match.Success;
        }
        return true;
    }
}

然后,您可以从任何地方调用它,例如:

if (Helper.IsValidDate(someDateString))
    // Bleh

在用于约会的任何类上创建一个扩展方法。

我强烈建议不要使用字符串来存储日期,因为它们有导致运行时错误的倾向。

它可能不太适合这个特定示例(这似乎属于另一个答案所暗示的帮助器/实用程序类),但您可以通过从基类继承在所有页面之间共享方法:

public abstract class BaseWindow : Window {
    protected static bool IsValidDate(string date) {
        // Do your stuff...
    }
}
// This is your actual WPF page class - when Visual Studio builds it, just change the 
// inheritance from "Window" to "BaseWindow"
public partial class MyWindow : BaseWindow {
}

您可以创建一个帮助程序类,就像其他答案之一一样,或者从基类继承并在那里实现它。而不是从原始类继承该类。

实用程序与基类的原因可能是:

  • 验证通常属于该屏幕,您可能不需要它在其他地方。比使用基类/继承更舒服。
  • 如果还想在其他情况下使用验证机制,请将其放在帮助程序类中。
  • 使用继承机制时,请记住验证类需要具有一些 WPF/GUI 导入,因此稍后在控制台应用中使用它可能会很棘手(因此请改用帮助程序)。

我想说的是,验证日期接近于业务逻辑,因此不应直接在任何页面上完成。它应该在业务层中处理。

编辑:我收回我的答案。 itsme86是正确的。这更多的是实用功能。