一、在我们创建实体后通常会给他一些特性,其中就有一个相当于注释的[Block("")]特性可以给字段;
我现在给大家举个例子,方便大家理解。这个还是很实用的特别是枚举或者实体转换中文。它可以和其他方法一起使用比如for循环之类的非常简便。
二、首先我们需要几个类我现在给大家列举出来(类的名字大家根据自己意愿取)。
1、需要一个AttributeExtend类
public class AttributeExtend
{
/// <summary>
/// 获得DisplayName
/// </summary>
/// <param name="prop"></param>
/// <returns></returns>
private static string GetDisplayName(PropertyInfo prop)
{
if (prop.IsDefined(typeof(DisplayAttribute), true))
{
DisplayAttribute? display = prop.GetCustomAttribute(typeof(DisplayAttribute)) as DisplayAttribute;
return display.DisplayName;
}
return prop.Name;
}
}
2、需要一个BlockAttribute类
/// <summary>
/// 块级标记器
/// </summary>
[AttributeUsage(AttributeTargets.Field)]
public class BlockAttribute : Attribute
{
/// <summary>
///
/// </summary>
public string DisplayName;
/// <summary>
///
/// </summary>
/// <param name="_displayName"></param>
public BlockAttribute(string _displayName)
{
DisplayName = _displayName;
}
}
3、需要一个DisplayAttribute类
/// <summary>
/// Url地址效验验证
/// </summary>
[AttributeUsage(AttributeTargets.Property)]
public class DisplayAttribute:Attribute
{
public string DisplayName;
public DisplayAttribute(string _displayName)
{
DisplayName = _displayName;
}
}
里面的方法大家复制的时候出错,那我可就不管了,里面的我都测过了没有错。
三、大家在调用的时候可以这样调用比如我拿枚举举例说明
public enum VisitModuleTypeEnum
{
/// <summary>
/// 其他
/// </summary>
[Block("其他")]
Other = 0,
/// <summary>
/// 首页
/// </summary>
[Block("首页")]
HomePage = 1,
/// <summary>
/// 了解更多
/// </summary>
[Block("了解更多")]
LearnMore = 2,
/// <summary>
/// 行业案例
/// </summary>
[Block("行业案例")]
IndustryCases = 3,
/// <summary>
/// 云平台支持
/// </summary>
[Block("云平台支持")]
Azure = 4,
/// <summary>
/// 安全服务支持
/// </summary>
[Block("安全服务支持")]
Security = 5,
/// <summary>
/// 商业应用支持
/// </summary>
[Block("商业应用支持")]
BizApps = 6,
/// <summary>
/// 现代办公支持
/// </summary>
[Block("现代办公支持")]
ModernOffice = 7,
/// <summary>
/// 联系我们
/// </summary>
[Block("联系我们")]
ContactUs = 8,
/// <summary>
/// 活动报名
/// </summary>
[Block("活动报名")]
ActivityRegistration = 9,
}
只要方法都引用了,就可以用这个属性;
我们在调用的时候可以这样调用:
log.ModuleType.GetBlock()
直接属性点方法就可以用了,如果想要循环便利也是可以的,在for循环里面写就行了。灵活多变。