经常我们需要为类的属性增加一些自定义的标签(Attribute),那么为属性应用了自定义的标签后,我们要如何查到这些自定义标签呢?下面是一个小示例:
1,我们先定义一个自定标签:
[AttributeUsage(AttributeTargets.All)]
public class DescriptionAttribute : Attribute
{
public string DescriptionContent
{
get;
set;
}
public DescriptionAttribute(string _descriptioncontent)
{
this.DescriptionContent = _descriptioncontent;
}
}
2,然后我们在某个类中应用该标签:
public enum eSourceType
{
[DescriptionAttribute("物料类型")]
Storage_Goods_Sort,
}
3,接下来我们可以这样取到上面Storage_Goods_Sort的DescriptionAttribute的值。
Type type = typeof(eSourceType);
MemberInfo memberInfo = type.GetMember("Storage_Goods_Sort ");
if (memberInfo.IsDefined(typeof(DescriptionAttribute), false))
{
object[] Attributes = memberInfo.GetCustomAttributes(typeof(DescriptionAttribute), false);
DescriptionAttribute descriptionAttribute = (DescriptionAttribute)Attributes[0];
Console.WriteLine(descriptionAttribute.DescriptionContent);
}
注意,这里是使用枚举eSourceType来做的例子,如果将eSourceType改为一个类,读取自定义标签的方法也是一样的。只不过是将MemberInfo memberInfo = type.GetMember("Storage_Goods_Sort");改为MethodInfo methodInfo = type.GetMethod("Storage_Goods_Sort")即可。