gpt4 book ai didi

c# - 如何使用 Enum 为数据验证提供描述性状态

转载 作者:太空宇宙 更新时间:2023-11-03 19:04:59 27 4
gpt4 key购买 nike

我需要使用 enum 以便我的应用程序中的验证易于阅读并且易于理解和管理:

但是,我觉得我的方法有点多余。有没有办法用更少的代码来做到这一点?

请注意:为简洁起见,我已从代码中删除实际验证。

代码:

public enum LastName
{
ContainNumbers,
ContainIlligalCharacters,
ContainEmptyString,
PassedValidation,
}

public enum FirstName
{
ContainNumbers,
ContainIlligalCharacters,
ContainEmptyString,
PassedValidation,
}
public class DataMember
{

int _lastNameState;
int _firstNameState;

public DataMember(string lastName, string firstName)
{
LastName lName;
FirstName fName;

_lastNameState = (int)(lName = (lastName == "A" ?
LastName.PassedValidation : LastName.ContainEmptyString));

_firstNameState = (int)(fName = (firstName == "B" ?
FirstName.PassedValidation : FirstName.ContainEmptyString));
}

public int UserLastName
{
get
{
return _lastNameState;
}
set
{
_lastNameState = value;
}
}

public int UserFirstName
{
get
{
return _firstNameState;
}
set
{
_firstNameState = value;
}
}

}

调用代码:

    protected void btnSubmit_Click(object sender, EventArgs e)
{
DataMember dataMember = new DataMember(txtLastName.Text, txtFirstName.Text);

bool isValidLastName = (dataMember.UserLastName == (int)LastName.PassedValidation);
bool isValidFirstName = (dataMember.UserFirstName == (int)FirstName.PassedValidation);

lblDisplayLastNameStatus.Text = isValidLastName.ToString();
lblDisplayFirstNameStatus.Text = isValidFirstName.ToString();
}

最佳答案

为姓氏和名字定义一个枚举。

public enum NameValidation
{
[Description("Contains Numbers"]
ContainNumbers,

[Description("Contains Illigal Characters"]
ContainIlligalCharacters,

[Description("Contains empty strings"]
ContainEmptyString,

[Description("Success. Passed Valiation"]
PassedValidation,
}

有一个 Enum Helper 扩展方法来读取描述:

 public static class EnumHelper
{
public static string GetDescription<T>(this T enumVal) where T : struct
{
Type type = enumVal.GetType();
if (!type.IsEnum)
{
throw new ArgumentException("Must be enum type","enumVal");
}
MemberInfo[] memberInfo = type.GetMember(enumVal.ToString());
if (memberInfo.Length > 0)
{
object[] attrs = memberInfo[0].GetCustomAttributes(typeof(DescriptionAttribute), false);

if (attrs.Length > 0)
{
return ((DescriptionAttribute)attrs[0]).Description;
}
}
return enumVal.ToString();
}
}

然后在“提交”按钮上,将描述分配给标签文本。

lblDisplayFirstNameStatus.Text= ValidateFirstName().GetDescription();
lblDisplayFirstNameStatus.Text= ValidateLastName().GetDescription();

此处 ValidateFirstName 和 ValidateLastName 返回 NameValidation 枚举类型。

关于c# - 如何使用 Enum 为数据验证提供描述性状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29598004/

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