在我的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;
}
谢谢
答案 0 :(得分:4)
您可以创建一个包含这样的辅助函数的新类:
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
答案 1 :(得分:3)
为您的日期使用的任何类创建扩展方法。
我强烈建议不要使用字符串来存储日期,因为它们会导致运行时错误。
答案 2 :(得分:2)
它可能不适合这个特定的例子(这似乎属于一个帮助/实用程序类,就像另一个答案所暗示的那样),但你可以通过继承基类来共享所有页面中的方法:
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 {
}
答案 3 :(得分:2)
您可以像其他答案之一那样创建一个辅助类,或者从基类继承并在那里实现它。比从原始类继承该类。
实用程序与基类的原因可以是:
答案 4 :(得分:1)
我想说验证日期接近于业务逻辑,因此不应该直接在任何页面上完成。它应该在业务层处理。
编辑:我收回了我的答案。 itsme86是正确的。这更多是实用功能。