我正在尝试使用枚举作为属性中的参数,并使用枚举的类型来确定代码中的内容,但是我很难获得枚举的实际类型。
这是我的枚举:
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?
答案 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;
}