我正在使用在c#中创建的枚举:
public enum ParamChildKey
{
[EnumMember(Value = "SYS")]
System,
[EnumMember(Value = "GAT")]
Gate,
[EnumMember(Value = "CRT")]
Create,
[EnumMember(Value = "FLT")]
Fault,
}
我正在vb.net中编写代码并拥有一个vb.net字符串,比如" CRT"我试图与它的枚举匹配,所以我可以将枚举传递给函数。
当我写 ParamChildKey.Create.ToValue 时,我得到一个字符串值" CRT"但是当我使用[Enum] .GetValues时,它返回每个枚举的整数索引," 2"在这种情况下。
我的问题是如何通过匹配字符串值来获取枚举,以便将枚举传递给函数?所以,如果我的字符串值为" CRT"如何从" CRT"获得ParamChildKey.Create?字符串值?在这个例子中,我将把ParamChildKey.Create传递给下面的函数。
GetParameterValue(paramName As Integer, Optional paramChildKey As ParamChildKey = ParamChildKey.System)
答案 0 :(得分:0)
要将字符串转换为枚举,请使用.NET 4中提供的Dim p As ParamChildKey
If [Enum].TryParse("CRT", p) Then
Console.WriteLine(p)
Console.WriteLine(p.ToString())
End If
方法。
$('.bookBut').click(function(e){
// create url
var uri = "services/bookService/"+this.id;
// make ajax call and load data into modal body
$.ajax({
url:uri,
cache:false,
success:function(data){
alert(data);
$('#bookModalBody').html(data);
$('#loginBookModal').modal("show");
},
error:function(error){
$('#bookModalBody').html("Sorry, some error occured. <br/>Come back soon.");
$('#loginBookModal').modal("show");
}
});
});
如果使用.NET 3.5或更低版本,则可以使用此版本https://stackoverflow.com/a/1082587/3230456
答案 1 :(得分:0)
EnumMemberAttribute用于序列化目的。所以它在你的场景中没用。
IMO最简单的解决方案是写一个swtich-case语句。
switch(textValue){
case "CRT":
return ParamChildKey.Create;
...
}
如果您有一组随时间变化的动态枚举,则可以使用System.Reflection库,但这比静态编写和编译的代码要糟糕得多。