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

動的型を使用して名前で変数を検索することもできますが、検索に含めるすべての列挙型のインスタンスが必要になります。

次の投稿を確認してください: Getting variable by name in 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 に答える