如何从属性中获取值?

时间:2017-05-10 15:09:23

标签: c# enums attributes

我正在尝试使用枚举作为属性中的参数,并使用枚举的类型来确定代码中的内容,但是我很难获得枚举的实际类型。

这是我的枚举:

    public enum DataTypes
{
    ShortText,
    LongText,
    Number,
    Boolean,
    Image,
    DatePicker,
    RichText,
    Content,
    DateTimePicker,
    ProductStatus,
    DeliveryMethod

}

这是属性:

    public class DataType : Attribute
{
    public DataTypes Type { get; set; }
}

最后,这是我应用它们的地方:

[DataType(Type=DataTypes.ShortText)]
    public string store { get; set; }

如何从PropertyInfo获取属性以返回DataTypes.ShortText?

1 个答案:

答案 0 :(得分:1)

首先,您必须获得该物业。最简单的形式可能如下:

var method = typeof(SomeClass).GetMethod("store");

GetMethod会返回MethodInfo的实例。

然后,您可以检索该属性是否存在:

var attribute = method.GetCustomAttribute<DataType>();
如果没有该类型的属性,

GetCustomAttribute将返回null。但如果该属性存在,GetCustomAttribute将返回该属性。

if (attribute != null)
{
    var myDataType = attribute.Type;
}