0

我有枚举:

public enum Colors { Yellow, Red }

然后我有一个字符串:

String enumName = "Colors";

是否可以从 enumName 中获取 enum 实例?就像是:

Enum colors = // get enum with name "Colors".

谢谢你,米格尔

4

3 回答 3

1

你在找这样的东西吗?

using System;
using System.Linq;

namespace Stuff
{
    class Program
    {
        static void Main(string[] args)
        {
            string enumName = "Colors";
            string value = "Red";


            var loadedPublicTypes = AppDomain.CurrentDomain.GetAssemblies().SelectMany(x => x.GetExportedTypes());
            var possibleEnums = loadedPublicTypes.Where(x => x.IsEnum && x.Name == enumName);

            foreach (var e in possibleEnums)
            {
                Console.WriteLine("{0} is{1} a member of {2}", value, Enum.GetNames(e).Contains(value) ? "" : " not", e.FullName);
            }

        }


    }
    public enum Colors
    {
        Red,
        Yellow
    }
}
于 2013-10-30T22:33:09.397 回答
0

您可以使用动态类型并按名称查找变量,但您必须拥有要包含在搜索中的所有枚举的实例。

查看以下帖子:在 C# 中按名称获取变量

于 2013-10-30T22:22:02.043 回答
0

您需要枚举类型的全名(例如System.Drawing.KnownColor, System.Drawing,或Microsoft.MediaCenter.UI.Colors, Microsoft.MediaCenter.UI)。

一旦你有了这个,你就可以使用反射来创建相应枚举的实例。

于 2013-10-30T22:22:09.603 回答