1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
/// <summary>
/// 获取枚举列表
/// </summary>
/// <param name="enumType">枚举的类型</param>
/// <returns>枚举列表</returns>
public
static
Dictionary<
int
,
string
> GetEnumList(Type enumType)
{
var
dic =
new
Dictionary<
int
,
string
>();
try
{
var
fd = enumType.GetFields();
for
(
var
index = 1; index < fd.Length; ++index)
{
var
info = fd[index];
var
fieldValue = System.Enum.Parse(enumType, fd[index].Name);
var
attrs = info.GetCustomAttributes(
typeof
(EnumTextAttribute),
false
);
foreach
(EnumTextAttribute attr
in
attrs)
{
var
key = (
int
)fieldValue;
if
(key == -100)
continue
;
var
value = attr.Text;
dic.Add(key, value);
}
}
return
dic;
}
catch
(Exception ex)
{
throw
new
Exception(ex.Message);
}
}
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
/// <summary>
/// 获取枚举名称
/// </summary>
/// <param name="enumType">枚举的类型</param>
/// <param name="id">枚举值</param>
/// <returns>如果枚举值存在,返回对应的枚举名称,否则,返回空字符</returns>
public
static
string
GetEnumTextById(Type enumType,
int
id)
{
var
ret =
string
.Empty;
try
{
var
dic = GetEnumList(enumType);
foreach
(
var
item
in
dic)
{
if
(item.Key != id)
continue
;
ret = item.Value;
break
;
}
return
ret;
}
catch
(Exception ex)
{
throw
new
Exception(ex.Message);
}
}
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
/// <summary>
/// 根据枚举值获取对应中文描述
/// </summary>
/// <param name="enumValue">枚举值</param>
/// <returns>枚举值中文描述</returns>
public
static
string
GetEnumTextByEnum(
object
enumValue)
{
var
ret =
string
.Empty;
if
((
int
)enumValue == -1)
return
ret;
try
{
var
dic = GetEnumList(enumValue.GetType());
foreach
(
var
item
in
dic)
{
if
(item.Key != (
int
)enumValue)
continue
;
ret = item.Value;
break
;
}
return
ret;
}
catch
(Exception ex)
{
throw
new
Exception(ex.Message);
}
}
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
/// <summary>
/// 获取枚举名称
/// </summary>
/// <param name="enumType">枚举的类型</param>
/// <param name="index">枚举值的位置编号</param>
/// <returns>如果枚举值存在,返回对应的枚举名称,否则,返回空字符</returns>
public
static
string
GetEnumTextByIndex(Type enumType,
int
index)
{
var
ret =
string
.Empty;
var
dic = GetEnumList(enumType);
if
(index < 0 || index > dic.Count)
return
ret;
var
i = 0;
foreach
(
var
item
in
dic)
{
if
(i == index)
{
ret = item.Value;
break
;
}
i++;
}
return
ret;
}
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
/// <summary>
/// 获取枚举值
/// </summary>
/// <param name="enumType">枚举的类型</param>
/// <param name="name">枚举名称</param>
/// <returns>如果枚举名称存在,返回对应的枚举值,否则,返回-1</returns>
public
static
int
GetEnumIdByName(Type enumType,
string
name)
{
var
ret = -1;
if
(
string
.IsNullOrEmpty(name))
return
ret;
var
dic = GetEnumList(enumType);
foreach
(
var
item
in
dic)
{
if
(
string
.Compare(item.Value, name, StringComparison.Ordinal) != 0)
continue
;
ret = item.Key;
break
;
}
return
ret;
}
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
|
/// <summary>
/// 获取名字对应枚举值
/// </summary>
/// <typeparam name="T">枚举类型</typeparam>
/// <param name="name">枚举名称</param>
/// <returns></returns>
public
static
T GetEnumIdByName<T>(
string
name)
where
T :
new
()
{
var
type =
typeof
(T);
var
enumItem = (T)TypeDescriptor.GetConverter(type).ConvertFrom(
"-1"
);
if
(
string
.IsNullOrEmpty(name))
return
enumItem;
try
{
var
fd =
typeof
(T).GetFields();
for
(
var
index = 1; index < fd.Length; ++index)
{
var
info = fd[index];
var
fieldValue = System.Enum.Parse(type, fd[index].Name);
var
attrs = info.GetCustomAttributes(
typeof
(EnumTextAttribute),
false
);
if
(attrs.Length != 1)
continue
;
var
attr = (EnumTextAttribute)attrs[0];
if
(!name.Equals(attr.Text))
continue
;
enumItem = (T)fieldValue;
break
;
}
return
enumItem;
}
catch
(Exception ex)
{
throw
new
Exception(ex.Message);
}
}
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
/// <summary>
/// 获取枚举值所在的位置编号
/// </summary>
/// <param name="enumType">枚举的类型</param>
/// <param name="name">枚举名称</param>
/// <returns>如果枚举名称存在,返回对应的枚举值的位置编号,否则,返回-1</returns>
public
static
int
GetEnumIndexByName(Type enumType,
string
name)
{
var
ret = -1;
if
(
string
.IsNullOrEmpty(name))
return
ret;
var
dic = GetEnumList(enumType);
var
i = 0;
foreach
(
var
item
in
dic)
{
if
(
string
.Compare(item.Value, name, StringComparison.Ordinal) == 0)
{
ret = i;
break
;
}
i++;
}
return
ret;
}
|