C# 从propertyType提取枚举类型

C# 从propertyType提取枚举类型,c#,generics,enums,C#,Generics,Enums,我有下面的场景 public class TestData { public TestEnum EnumTestData{get;set;} } public Enum TestEnum { Test1,Test2,Test3 } 我有另一个类,它遍历所有属性的TestData类。根据属性类型,它将为其生成随机数据。现在,当我的propertyType是Enum类型时,我如何知道它是哪种类型的Enum,以及如何获取Test1、Test2或Test3作为我的输出?您只需.

我有下面的场景

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

public Enum TestEnum
{
     Test1,Test2,Test3 
}

我有另一个类,它遍历所有属性的TestData类。根据属性类型,它将为其生成随机数据。现在,当我的propertyType是Enum类型时,我如何知道它是哪种类型的Enum,以及如何获取Test1、Test2或Test3作为我的输出?

您只需
.ToString()
EnumTestData属性,如下所示:

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

var dummy = test.EnumTestData.ToString();

注意:
dummy
将是
的“Test1”
您可以只
.ToString()
使用
EnumTestData
属性,如下所示:

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

var dummy = test.EnumTestData.ToString();

注意:
dummy
将是
“Test1”

不完全确定您要问什么,但这是比较和获取枚举字符串值的方式:

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 
}

不完全确定您要问什么,但以下是比较和获取枚举字符串值的方法:

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 
}

您可以使用以下方法获取所有属性的列表:

然后通过检查和属性来检查它是否为
Enum
类型:

foreach(var prop in properties)
{
    if (prop.PropertyType.IsEnum)
    {
        ...
    }
}
最后使用以下方法获得一个随机值:


您可以使用以下方法获取所有属性的列表:

然后通过检查和属性来检查它是否为
Enum
类型:

foreach(var prop in properties)
{
    if (prop.PropertyType.IsEnum)
    {
        ...
    }
}
最后使用以下方法获得一个随机值: