将枚举作为参数传递给 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());
}