私は列挙型を持っています:
public enum Colors { Yellow, Red }
それから私は文字列を持っています:
String enumName = "Colors";
enumNameからenumインスタンスを取得することは可能ですか? 何かのようなもの:
Enum colors = // get enum with name "Colors".
ありがとう、ミゲル
私は列挙型を持っています:
public enum Colors { Yellow, Red }
それから私は文字列を持っています:
String enumName = "Colors";
enumNameからenumインスタンスを取得することは可能ですか? 何かのようなもの:
Enum colors = // get enum with name "Colors".
ありがとう、ミゲル
このようなものを探していますか?
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
}
}
動的型を使用して名前で変数を検索することもできますが、検索に含めるすべての列挙型のインスタンスが必要になります。
次の投稿を確認してください: Getting variable by name in C# .
列挙型の完全な名前が必要です (例: System.Drawing.KnownColor, System.Drawing
、 またはMicrosoft.MediaCenter.UI.Colors, Microsoft.MediaCenter.UI
)。
これを取得したら、リフレクションを使用して、対応する列挙型のインスタンスを作成できます。