由于蓝牙搜索有三种状态,“停止搜索”,“正在停止”,“搜索”。这三种状态我在代码中以枚举类型写入。在调用相应枚举时,希望根据枚举值中文展示相应的搜索状态。代码参考如下:
这部分代码是枚举了三种搜索状态:
public class DevStatusInfo
{
public enum DevSearchStatus
{
Searching = 0,
Stopping = 1,
Stop = 2
}
}
下面创建RemarkAttribute特性:
[AttributeUsage(AttributeTargets.Enum|AttributeTargets.Field)]
public class RemarkAttribute:Attribute
{
public RemarkAttribute(string remark)
{
this.Remark = remark;
}
public string Remark{private set;get;}
}
public static class RemarkExtend
{
public static string GetRemark(this Enum enumValue)
{
Type type = enumValue.GetType();
FieldInfo field = type.GetField(enumValue.ToString());
if(field.IsDefined(typeof(RemarkAttribute),true))
{
RemarkAttribute remarkAttribute = (RemarkAttribute)field.GetCustomAttribute(typeof(RemarkAttribute));
return remarkAttribute.Remark;
}
else
return enumValue.ToString();
}
}
最后对枚举的类型添加特性:
public class DevStatusInfo
{
[Remark("设备状态")]
public enum DevSearchStatus
{
[Remark("停止搜索")]
Searching = 0,
[Remark("正在停止")]
Stopping = 1,
[Remark("搜索")]
Stop = 2
}
}
最后调用方法:
//在需要的地方调用即可
public string FindDevStatus(DevStatusInfo.DevSearchStatus status)
{
return status.GetRemark();
}