1

以下のシナリオがあります

public class TestData
{
     public TestEnum EnumTestData{get;set;}
}

public Enum TestEnum
{
     Test1,Test2,Test3 
}

すべてのプロパティの TestData クラスをトラバースする別のクラスがあります。プロパティのタイプに応じて、ランダム データが生成されます。私のpropertyTypeがEnum型の場合、それがどの型の列挙型であるか、およびTest1、Test2、またはTest3のいずれかを出力として取得する方法をどのように知ることができますか?

4

3 に答える 3

6

Type.GetPropertiesメソッドを使用して、すべてのプロパティのリストを取得できます。

var targetType = typeof(TestData);
var properties = targetType.GetProperties();

次に、 プロパティとプロパティEnumをチェックして、型かどうかをチェックします。PropertyInfo.PropertyTypeType.IsEnum

foreach(var prop in properties)
{
    if (prop.PropertyType.IsEnum)
    {
        ...
    }
}

Enum.GetValues最後に、次のメソッドを使用してランダムな値を取得します。

var random = new Random();
...

var values = Enum.GetValues(prop.PropertyType);
var randomValue = ((IList)values)[random.Next(values.Length)];
于 2013-08-14T03:16:49.293 に答える