在每个类中调用相同方法的最佳方法是什么
本文关键字:方法 最佳 是什么 调用 | 更新日期: 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是正确的。这更多的是实用功能。