我有以下情况
public class TestData
{
public TestEnum EnumTestData{get;set;}
}
public Enum TestEnum
{
Test1,Test2,Test3
}
我有另一个类遍历我的TestData类以获取所有属性。根据属性类型,它将为其生成随机数据。现在当我的propertyType是Enum类型时,我如何知道它的枚举类型以及如何将Test1,Test2或Test3作为我的输出?
答案 0 :(得分:5)
您可以使用Type.GetProperties
方法获取所有属性的列表:
var targetType = typeof(TestData);
var properties = targetType.GetProperties();
然后检查PropertyInfo.PropertyType
和Type.IsEnum
属性,检查它是否为Enum
类型:
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)];
答案 1 :(得分:0)
您可以.ToString()
EnumTestData
属性,如下所示:
var test = new TestData();
test.EnumTestData = TestEnum.Test1;
var dummy = test.EnumTestData.ToString();
注意:dummy
将为"Test1"
。
答案 2 :(得分: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
}