我已经声明了一个枚举:
public enum SupportedPermissions
{
basic,
repository,
both
}
我也有一个这样的POCO:
public class File
{
public string Id { get; set; }
public string Name { get; set; }
public string Description { get; set; }
public SupportedPermissions SupportedPermissions { get; set; }
}
现在我想创建一个方法,我可以用它来创建一个新的 File 对象:
public string CreateFile(string id, string name, string description, Enum supportedPermissions)
{
file = new File
{
Name = name,
Id = id,
Description = description,
SupportedPermissions = supportedPermissions.basic
};
return file.Id;
}
如何为枚举创建参数以及如何像在伪代码中那样分配该参数
SupportedPermissions = supportedPermissions.basic
以便我的 File 实例设置了 SupportedPermissions?
更改
CreateFile
方法的签名以期望 SupportedPermissions
值而不是普通的 Enum。
public string CreateFile(string id, string name, string description, SupportedPermissions supportedPermissions)
{
file = new File
{
Name = name,
Id = id,
Description = description,
SupportedPermissions = supportedPermissions
};
return file.Id;
}
然后,当您调用方法时,您将
SupportedPermissions
值传递给您的方法
var basicFile = CreateFile(myId, myName, myDescription, SupportedPermissions.basic);
如果你想传入要使用的值,你必须使用你声明的枚举类型并直接使用提供的值:
public string CreateFile(string id, string name, string description,
/* --> */ SupportedPermissions supportedPermissions)
{
file = new File
{
Name = name,
Id = id,
Description = description,
SupportedPermissions = supportedPermissions // <---
};
return file.Id;
}
如果您想使用固定值,则根本不需要任何参数。相反,直接使用枚举值。语法类似于类的静态成员:
public string CreateFile(string id, string name, string description) // <---
{
file = new File
{
Name = name,
Id = id,
Description = description,
SupportedPermissions = SupportedPermissions.basic // <---
};
return file.Id;
}
首先将方法参数
Enum supportedPermissions
更改为SupportedPermissions supportedPermissions
。
然后像这样创建你的文件
file = new File
{
Name = name,
Id = id,
Description = description,
SupportedPermissions = supportedPermissions
};
对你的方法的调用应该是
CreateFile(id, name, description, SupportedPermissions.basic);
public string CreateFile(string id, string name, string description, SupportedPermissions supportedPermissions)
{
file = new File
{
Name = name,
Id = id,
Description = description,
SupportedPermissions = supportedPermissions
};
return file.Id;
}
public static class Program
{
public enum MyEnums
{
[Description("January")]
One = 1,
[Description("February")]
Two = 2,
[Description("March")]
Three = 3,
[Description("April")]
Four = 4,
}
static void Main(string[] args)
{
var dictionary = GetDropDownValues(typeof(MyEnums));
dictionary.ToList().ForEach(x => Console.WriteLine($"{x.Key} - {x.Value}"));
}
public static Dictionary<int, string> GetDropDownValues(Type @enum)
{
var dictionary = new Dictionary<int, string>();
foreach (var item in Enum.GetValues(@enum))
{
dictionary.Add((int)item, GetDescription((Enum)item));
}
return dictionary;
}
public static string GetDescription(this Enum value)
{
FieldInfo fieldInfo = value.GetType().GetField(value.ToString());
if (fieldInfo == null)
{
return null;
}
var attribute = (DescriptionAttribute)fieldInfo.GetCustomAttribute(typeof(DescriptionAttribute));
return attribute.Description;
}
}