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();

然后通过检查and属性来检查它是否是一个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 回答
0

您可以只.ToString()使用该EnumTestData属性,如下所示:

var test = new TestData();
test.EnumTestData = TestEnum.Test1;

var dummy = test.EnumTestData.ToString();

注:dummy"Test1".

于 2013-08-14T03:12:55.857 回答
0

不完全确定你在问什么,但这是你将如何比较和获取枚举的字符串值:

var td = new TestData();
// compare
if (td.EnumTestData == TestEnum.Test1)
{
    // Will output "Test1"
    Console.WriteLine(td.EnumTestData.ToString());
}

另外,我确定这只是一个错字,但enum不是Enum

public enum TestEnum
{
     Test1,Test2,Test3 
}
于 2013-08-14T03:13:01.693 回答