Kje*_*sen 11 .net c# data-annotations
我希望能够这样做:
string email = "some@email.com";
bool isValid = IsValidEmail(email);
//returns true
Run Code Online (Sandbox Code Playgroud)
...但是使用Microsoft已经在EmailAddressAttribute中提供的逻辑.
IsValidEmail有数百个好的和坏的实现,当我可以使用微软已经考虑过的东西时,我不想添加自己的.按理说,他们会比我做得更好.
在最近的ASP.Net版本中,我们有System.ComponentModel.DataAnnotations,它为我们提供了优秀的EmailAddressAttribute,它允许我们像这样装饰我们的模型:
public class SomeModel
{
[EmailAddress]
public string Email { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
这个类是密封的,所以我不能调用EmailAddressAttribute.IsValid()
有没有一种好方法可以利用微软已经做过的事情?在.Net框架中的某个地方是否有一个方法,让我测试字符串对数据注释,我忽略了?
有点像......:
var emailChecker = new DataAnnotationsChecker<EmailAddressAttribute>();
string email = "some@email.com";
bool isValid = emailChecker.IsValid(email);
//returns true
Run Code Online (Sandbox Code Playgroud)
如果您无法想象为什么我会想要这个,请考虑获取一个List并想要检查哪些是有效的电子邮件.
Nko*_*osi 14
您可以使用它EmailAddressAttribute来进行验证.
这sealed意味着您无法创建从其继承的另一个类.并不意味着你不能使用它.
创建了一些单元测试并且工作正常
[TestMethod]
public void Should_Use_Email_Address_Attribute_To_Validate_Email() {
var emailChecker = new System.ComponentModel.DataAnnotations.EmailAddressAttribute();
string email = "some@email.com";
bool isValid = emailChecker.IsValid(email);
Assert.IsTrue(isValid);
}
[TestMethod]
public void Should_Use_Email_Address_Attribute_To_Invalidate_Email() {
var emailChecker = new System.ComponentModel.DataAnnotations.EmailAddressAttribute();
string email = "some@emai l.com";
bool isValid = emailChecker.IsValid(email);
Assert.IsFalse(isValid);
}
Run Code Online (Sandbox Code Playgroud)