将vb.net字符串值与c#enum

时间:2015-10-22 22:52:39

标签: vb.net c#-to-vb.net

我正在使用在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)

2 个答案:

答案 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库,但这比静态编写和编译的代码要糟糕得多。