docs/025_枚举类型扩展方法.md
(开头部分) 4KB这里只显示每个文件的开头 60 行。登录后可以解锁完整代码。
# 枚举类型扩展方法
> 所属包: DotNetCommon.Core
为了方便操作枚举,这里给枚举定义了四要素:code、key、desc、refer。看如下定义:
```csharp
public enum EnumTest
{
[Description("A项描述")]
A=1,
[Description("B项描述")]
B=2,
[Description("C项描述")]
[ReferenceClass(typeof(SocketsHttpHandler))]
C=3
}
```
在上面的枚举中,```code```是"1,2,3",```key```是“A,B,C”,```desc```是“A项描述、B项描述、C项描述”,而```refer```是"null,null,typeof(SocketsHttpHandler) " 下面的扩展方法就是围绕这三项转换的。
```csharp
//ToCodeKeyDescriptionReferenceClassList(): 将枚举转为由code、key、desc、refer组成元组的集合
//ToCodeKeyDescriptionList(): 将枚举转为由code、key、desc组成元组的集合
//ToKeyDescriptionList():将枚举转为由key、desc键值对组成的集合
//ToKeyCodeList():将枚举转为由key、code键值对组成的集合
//ToCodeKeyList():将枚举转为由code、key键值对组成的集合
//ToReferType():返回枚举项上ReferClass里指向的type值(复合枚举不能使用这个方法,请使用 ToReferTypes())
//ToReferTypes():返回复合枚举项上ReferClass里指向的type值集合
//示例:
var list = EnumTest.B.ToCodeDescriptionList();
list.Count.ShouldBe(3);
list[0].code.ShouldBe(1);
list[0].desc.ShouldBe("A项描述");
```
**复合枚举:**
复合枚举又称为位枚举,即:可以用一个枚举值表示多个枚举值的叠加状态。
示例如下:
```csharp
//复合枚举的本质是对字节进行按位与操作
[Flags]
public enum EnumTest
{
A = 1, B = 2, C = 4
}
EnumTest test = EnumTest.A | EnumTest.B;
Console.WriteLine($"test contains any EnumTest.A =>{(test & EnumTest.A) != 0}");
Console.WriteLine($"test contains any EnumTest.B =>{(test & EnumTest.B) != 0}");
//test包含A或B任意一项
Console.WriteLine($"test contains any EnumTest.A|EnumTest.B =>{(test & (EnumTest.A|EnumTest.B)) != 0}");
后面还有 61 行代码,解锁后查看完整代码
24 小时内免费解锁 3 个项目,之后 1 积分/个。 规则说明
AI 解读 AI
登录后可用,每次 10 积分,解读结果公开显示在下面。
还没有人解读过这个文件。
