gpt4 book ai didi

c# - 使用 EmailAddressAttribute 在 .net 中验证电子邮件字符串,但不在属性上

转载 作者:可可西里 更新时间:2023-11-01 08:42:54 28 4
gpt4 key购买 nike

我希望能够做到这一点:

string email = "some@email.com";
bool isValid = IsValidEmail(email);
//returns true

...但是使用 Microsoft 已经在 EmailAddressAttribute 中给我们的逻辑。

IsValidEmail 有数百种好的和坏的实现,我不想添加我自己的,当我可以使用某些东西时,Microsoft 已经考虑过了。按理说,他们会比我做得更好。

在最近的 ASP.Net 版本中,我们有 System.ComponentModel.DataAnnotations,它为我们提供了出色的 EmailAddressAttribute ,这让我们可以像这样装饰我们的模型:

public class SomeModel
{
[EmailAddress]
public string Email { get; set; }
}

class is sealed , 所以我不能调用 EmailAddressAttribute.IsValid()

有什么好的方法可以利用 Microsoft 已经完成的工作吗? .Net 框架中是否有某种方法可以让我针对数据注释测试字符串,但我忽略了这一点?

类似...的内容:

var emailChecker = new DataAnnotationsChecker<EmailAddressAttribute>();
string email = "some@email.com";
bool isValid = emailChecker.IsValid(email);
//returns true

如果您无法想象我为什么想要这个,请考虑获取一个列表并想检查哪些是有效的电子邮件。

最佳答案

您可以使用 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);
}

关于c# - 使用 EmailAddressAttribute 在 .net 中验证电子邮件字符串,但不在属性上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36947823/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com