1 ///
2 /// 指定带有颜色注释信息的枚举值的说明。
3 ///
4 [AttributeUsage(AttributeTargets.Enum | AttributeTargets.Field, AllowMultiple =
false, Inherited =
true)]
5 public sealed class ColoredEnumDescriptionAttribute : EnumDescriptionAttribute
6 {
7 ///
8 /// 初始化 类的新实例并带有说明。
9 ///
10 /// 说明文本。
11 public ColoredEnumDescriptionAttribute(
string description) :
this(description,
null) { }
12 13 ///
14 /// 初始化 类的新实例并带有说明。
15 ///
16 /// 说明文本。
17 /// 前景色。
18 public ColoredEnumDescriptionAttribute(
string description,
string foreColor) :
this(description, foreColor,
null) { }
19 20 ///
21 /// 初始化 类的新实例并带有说明。
22 ///
23 /// 说明文本。
24 /// 前景色。
25 /// 背景色。
26 public ColoredEnumDescriptionAttribute(
string description,
string foreColor,
string backColor) :
this(description, foreColor, backColor,
null) { }
27 28 ///
29 /// 初始化 类的新实例并带有说明。
30 ///
31 /// 说明文本。
32 /// 前景色。
33 /// 背景色。
34 /// 指定 HTML 标签中的 id 特性字段的值。
35 public ColoredEnumDescriptionAttribute(
string description,
string foreColor,
string backColor,
string id) :
this(description, foreColor, backColor, id,
null) { }
36 37 ///
38 /// 初始化 类的新实例并带有说明。
39 ///
40 /// 说明文本。
41 /// 前景色。
42 /// 背景色。
43 /// 指定 HTML 标签中的 id 特性字段的值。
44 /// 指定 HTML 标签中的 target 特性字段的值。
45 public ColoredEnumDescriptionAttribute(
string description,
string foreColor,
string backColor,
string id,
string target) :
base(description)
46 {
47 this.ForeColor = foreColor ?? String.Empty;
48 this.BackColor = backColor ?? String.Empty;
49 this.Id = id ?? String.Empty;
50 this.Target = target ?? String.Empty;
51 }
52 53 ///
54 /// 获取或设置前景色。
55 ///
56 public string ForeColor {
get;
set; }
57 58 ///
59 /// 获取或设置背景色。
60 ///
61 public string BackColor {
get;
set; }
62 63 ///
64 /// 获取或设置 HTML 标签中的 id 特性字段的值。
65 ///
66 public string Id {
get;
set; }
67 68 ///
69 /// 获取或设置 HTML 标签中的 target 特性字段的值。
70 ///
71 public string Target {
get;
set; }
72 73 ///
74 /// 返回当前对象的 HTML 表示形式。
75 ///
76 /// 基础链接地址。可以为空。
77 /// 标签名称。
78 /// 返回 。
79 public string ToHTML(
string baseUrl =
null,
string tagName =
"span")
80 {
81 var html =
new StringBuilder();
82 83 html.Append(
'<');
84 85 if (String.IsNullOrWhiteSpace(baseUrl)) html.Append(tagName);
86 else 87 {
88 tagName =
"a";
89 90 html.Append(tagName);
91 html.Append(
@" href=""");
92 html.Append(baseUrl);
93 html.Append(
@"""");
94 95 if (String.IsNullOrWhiteSpace(
this.Id) ==
false)
96 {
97 html.Append(
@" id=""");
98 html.Append(
this.Id);
99 html.Append(
@"""");
100 }
101 102 if (String.IsNullOrWhiteSpace(
this.Target) ==
false)
103 {
104 html.Append(
@" targetid=""");
105 html.Append(
this.Target);
106 html.Append(
@"""");
107 }
108 }
109 110 if (!String.IsNullOrWhiteSpace(
this.ForeColor) || !String.IsNullOrWhiteSpace(
this.BackColor))
111 {
112 html.Append(
@" style=""");
113 114 if (String.IsNullOrWhiteSpace(
this.ForeColor) ==
false)
115 {
116 html.Append(
"color:");
117 html.Append(
this.ForeColor);
118 html.Append(
";");
119 }
120 121 if (String.IsNullOrWhiteSpace(
this.BackColor) ==
false)
122 {
123 html.Append(
"background-color:");
124 html.Append(
this.BackColor);
125 html.Append(
";");
126 }
127 128 html.Append(
@"""");
129 }
130 131 html.Append(
@">");
132 html.Append(
this.Description);
133 html.Append(
"");
134 html.Append(tagName);
135 html.Append(
">");
136 137 return html.ToString();
138 }
139 }