繁体   English   中英

将枚举作为参数传递给 C# 中的方法

[英]Passing an enum as argument into a method in C#

我之前问过这个问题,但因为没有足够的解释而将其删除。

还想问一下。。

我有一个这样的枚举:

 public enum Call_Status
 {
     CALL_THIS,
     CALL_THAT,
     CALL_IT
 }

在我的控制器中,我试图使我的代码动态化,因此尝试将 ENUM 作为参数传递给;

调用方式:

  bool result =  Method1 (Call_Status.CALL_THIS)

领取方式

  public bool Method1(Call_Status status)
  {
       //Processing
       //I build a List<string> lstValue;

       //Now I'm trying to dynamically determine if this LIST contains my enum value

       if(lstValue.Contains(nameof(Permission.status??))) <-- I am unsure how this needs to be coded so I can do exactly this
       {
          return true;
       }

   return false;
  }

您可以将字符串解析为枚举或以相反的方式使用enum.ToString 但第一个问题是:为什么首先不使用List<Call_Status> 然后是lstValue.Contains(status)

如果这是不可能的,请使用Enum.TryParse / Enum.Parse (如果它是安全的)

public bool Method1(Call_Status status)
{
     // ...
     return lstValue.Select(s => Enum.Parse<Call_Status>(s)).Contains(status));
}

或相反的方式(更简单更安全,不需要Enum.TryParse ,但也不需要验证):

public bool Method1(Call_Status status)
{
     // ...
     return lstValue.Contains(status.ToString());
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM