我有一个类,它是数据库中的一个实体,它有一堆日期表示为字符串。例如,它可能是这样的:
public class Stuff
{
public string Date1 {get;set;}
public string Date2 {get;set;}
public string Date3 {get;set;}
public string Date4 {get;set;}
}
然后我有一个验证方法来验证其他属性并验证日期属性。目前,我正在为每个对象分别验证每个日期。这可行,但我想知道是否有一种方法可以使其通用,因此我不必在类之间和类本身内复制代码。我目前正在做类似的事情:
public bool ValidateDate(string date)
{
string[] overrides = {"","__/__/____"};
bool success = true;
DateTime dateTime;
if(!overrides.Contains(date) && !DateTime.TryParse(date,out dateTime))
{
success = false;
}
return success;
}
//Notice in this method I am repeating the if statements.
public bool Validate(Stuff stuff, out string message)
{
message = string.Empty;
bool success = true;
if(!ValidateDate(stuff.Date1))
{
success = false;
message = "Date 1 is invalid";
}
if(!ValidateDate(stuff.Date2))
{
success = false;
message = "Date 2 is invalid";
}
if(!ValidateDate(stuff.Date3))
{
success = false;
message = "Date 3 is invalid";
}
if(!ValidateDate(stuff.Date4))
{
success = false;
message = "Date 4 is invalid";
}
return success;
}
void Main()
{
string message;
Stuff stuff = new Stuff();
stuff.Date1 = "01/01/2020";
stuff.Date2 = "__/__/____";
stuff.Date3 = "";
stuff.Date4 = "44/__/____";
bool valid = Validate(stuff, out message);
}
我想过做类似的事情:
public bool Validate<T>(T value, out string message)
{
//Validation here
}
但是,如果我错了,请纠正我,但这需要我获取属性并使用反射来检查日期的值,而我的另一个问题是属性是字符串,所以我无法检查如果是日期时间?