C# 将下拉索引值作为枚举字段的值传递

C# 将下拉索引值作为枚举字段的值传递,c#,unity3d,C#,Unity3d,我有一个带有下拉菜单的面板;我用它在我的项目中设置一个字段 public class projectclass { public enum mainpriority { basic, urgent, critical }; public mainpriority _priorityfield { get; set;} } project类对此字段使用枚举,因此要填充下拉列表,我需要执行以下操作: mydropd

我有一个带有下拉菜单的面板;我用它在我的项目中设置一个字段

public class projectclass
{
    public enum mainpriority
    {
        basic,
        urgent,
        critical
    };
    public mainpriority _priorityfield { get; set;}


}
project类对此字段使用枚举,因此要填充下拉列表,我需要执行以下操作:

mydropdown.options.Clear();
foreach (projectclass._priorityfield priority in projectclass._priorityfield.GetValues(typeof(projectclass._priorityfield)))
{
    mydropdown.options.Add( new Dropdown.OptionData() {text = priority.ToString()});
}
这允许我在dropbox中为projectclass的每个实例显示字段。 在这个方向上一切都是好的,但是如果我想做相反的事情(更改下拉列表中的值,并相应地更改类字段),我无法使它工作

主要的问题是,我试图将值赋值为int(这是我从dropdown.value()方法中得到的),但是VS告诉我不可能将_priorityfield类型设置为int类型

不是枚举,等于0,1,2…..n;那么您可以使用“基本”或0作为值

这就是我使用onValueChanged委托从下拉列表中设置类实例值的方法

private void UpdatePriority(Dropdown priority)
{
    int tempvalue = priority.value;
    projectclass_instance1._priorityfield = tempvalue;
}

我假设我可以传递一个int,但是VS说这是不可能的。我可以将下拉列表的每个值映射到枚举中的一个条目,但我不确定它是否是最佳解决方案。

感谢Ehsan提供的解决方案


错误是因为我需要将int值强制转换为enum类型,以便正确识别该值。

您必须强制转换它:
(mainpriority)tempvalue
就是这样;强制转换它将删除错误。它不会更新类实例中的原始值,但这是另一个问题;我能解决这个问题。谢谢