C#枚举类型的常用操作总结
来源:互联网 发布:罗技g303编程 编辑:程序博客网 时间:2024/05/22 10:50
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;
}
阅读全文
0 0
- C#枚举类型的常用操作总结
- C#枚举类型的常用操作总结
- C#枚举类型的常用操作总结
- C#中枚举类型的使用总结
- C#之枚举类型总结
- C#对DateTime类型的操作总结
- C#对DateTime类型的操作总结
- C#对DateTime类型的操作总结
- C# 枚举类型的扩展
- C# 枚举类型的转换
- C# Enum枚举类型使用总结
- C#中值类型的枚举类型
- C#枚举的常用使用方法
- 枚举(enum)的常用操作
- 枚举的一些常用操作
- 枚举的一些常用操作
- c#中DataTime类型的常用操作整理
- C#中string类型的常用方法总结
- (hnust 1050)巧克力(DP)
- 删除Docbar中的添加内容功能
- 击碎瓶颈《华为项目管理体系最佳实践 》青岛站
- 物联网供应链之全貌与动向
- 学习UnityShader入门精要笔记3——更复杂的光照
- C#枚举类型的常用操作总结
- python3 urllib.parse.urljoin()用法
- 制作Wi-Fi Ducky远程HID攻击设备
- CK小说程序 2.0 一款超棒的小说管理网站
- Spark调优
- fork出的子进程和父进程
- Leetcode-Permutation ll(深搜)
- A
- SAS不能读取复杂的csv文件怎么办?