gpt4 book ai didi

asp.net-2.0 - C# 检查常量中是否存在值

转载 作者:行者123 更新时间:2023-12-03 07:49:33 29 4
gpt4 key购买 nike

我已经通过这种方式声明了我的 C# 应用程序常量:

public class Constant
public struct profession
{
public const string STUDENT = "Student";
public const string WORKING_PROFESSIONAL = "Working Professional";
public const string OTHERS = "Others";
}

public struct gender
{
public const string MALE = "M";
public const string FEMALE = "F";
}
}

我的验证函数:

public static bool isWithinAllowedSelection(string strValueToCheck, object constantClass)
{

//convert object to struct

//loop thru all const in struct
//if strValueToCheck matches any of the value in struct, return true
//end of loop

//return false
}

在运行时,我想传递用户输入的值和结构来检查该值是否存在于结构中。该结构可以是职业和性别。我怎样才能实现它?

示例:

if(!isWithinAllowedSelection(strInput,Constant.profession)){
response.write("invalid profession");
}

if(!isWithinAllowedSelection(strInput,Constant.gender)){
response.write("invalid gender");
}

最佳答案

您可能想使用enums ,而不是具有常量的结构。


枚举为您提供了很多可能性,使用它的字符串值将其保存到数据库等并不难。

public enum Profession
{
Student,
WorkingProfessional,
Others
}

现在:

通过值的名称检查Profession中是否存在值:

var result = Enum.IsDefined(typeof(Profession), "Retired"));
// result == false

获取字符串形式的枚举值:

var result = Enum.GetName(typeof(Profession), Profession.Student));
// result == "Student"

如果您确实无法避免使用带有空格或其他特殊字符的值名称,则可以使用 DescriptionAttribute:

public enum Profession
{
Student,
[Description("Working Professional")] WorkingProfessional,
[Description("All others...")] Others
}

现在,要从 Profession 值获取描述,您可以使用此代码(此处作为扩展方法实现):

public static string Description(this Enum e)
{
var members = e.GetType().GetMember(e.ToString());

if (members != null && members.Length != 0)
{
var attrs = members.First()
.GetCustomAttributes(typeof(DescriptionAttribute), false);
if (attrs != null && attrs.Length != 0)
return ((DescriptionAttribute) attrs.First()).Description;
}

return e.ToString();
}

此方法获取属性中定义的描述,如果没有,则返回值名称。用法:

var e = Profession.WorkingProfessional;
var result = e.Description();
// result == "Working Professional";

关于asp.net-2.0 - C# 检查常量中是否存在值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3986310/

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