Netor.Extensions.EnumSourceGenerator 1.0.6
Netor.Extensions.EnumSourceGenerator
Netor.Extensions.EnumSourceGenerator 是一个基于 Roslyn 的增量源代码生成器,用于为枚举类型生成一组实用的扩展方法,帮助开发者更高效地操作枚举。
功能
该生成器会为项目中的每个枚举类型自动生成以下扩展方法:
ToDictionary
- 返回一个只读字典,其中键是枚举成员的名称,值是枚举值的字符串形式。
ToIntegers
- 返回一个只读字典,其中键是枚举成员的名称,值是枚举值的
int类型。
- 返回一个只读字典,其中键是枚举成员的名称,值是枚举值的
ToBytes
- 返回一个只读字典,其中键是枚举成员的名称,值是枚举值的
byte类型。
- 返回一个只读字典,其中键是枚举成员的名称,值是枚举值的
ToDisplays
- 返回一个只读字典,其中键是枚举项,值是其
Display属性的Name值。 - 如果未定义
Display属性,则返回枚举项的名称。
- 返回一个只读字典,其中键是枚举项,值是其
Display
- 返回枚举项的
Display属性的Name值。 - 如果未定义
Display属性,则返回枚举项的名称。
- 返回枚举项的
使用方法
安装 NuGet 包 在项目中安装
Netor.Extensions.EnumSourceGeneratorNuGet 包:dotnet add package Netor.Extensions.EnumSourceGenerator定义枚举 在代码中定义枚举类型,例如:
public enum AccountType { [Display(Name = "Savings Account")] Savings, [Display(Name = "Checking Account")] Checking, [Display(Name = "Loan")] Loan }使用生成的扩展方法 编译后,生成器会为每个枚举类型生成扩展方法。例如:
var displayName = AccountType.Savings.Display(); // 返回 "Savings Account" var dictionary = AccountType.Savings.ToDisplays(); // 返回所有枚举项及其 Display 名称的字典
特性
- 自动化生成:无需手动编写扩展方法,生成器会自动为每个枚举生成代码。
- 高性能:生成的代码在编译时完成,无运行时开销。
- 灵活性:支持
Display属性的解析,未定义时提供默认值。
支持的环境
- C# 版本:13.0 或更高版本
- .NET 目标框架:.NET Standard 2.0
示例
以下是一个完整的示例:
输入代码
public enum AccountType {
[Display(Name = "Savings Account")]
Savings,
[Display(Name = "Checking Account")]
Checking,
[Display(Name = "Loan")]
Loan
}
```
### 生成的扩展方法
```csharp
public static class AccountTypeExtensions {
public static string Display(this AccountType @enum) {
var displayDictionary = @enum.ToDisplays();
return displayDictionary.TryGetValue(@enum, out var displayName) ? displayName : @enum.ToString();
}
public static IReadOnlyDictionary<AccountType, string> ToDisplays(this AccountType @enum)
{
return new Dictionary<AccountType, string>
{
{ AccountType.Savings, "Savings Account" },
{ AccountType.Checking, "Checking Account" },
{ AccountType.Loan, "Loan" },
};
}
}
贡献
欢迎提交问题和贡献代码!请访问 GitHub 仓库 了解更多信息。
许可证
Netor.Extensions.EnumSourceGenerator 遵循 MIT 许可证。
Showing the top 20 packages that depend on Netor.Extensions.EnumSourceGenerator.
| Packages | Downloads |
|---|---|
|
Noter.Microbridge.Extensions
Noter.Microbridge.Extensions 是一个用于微服务通信的扩展库,提供了微服务网关的客户端和服务实现。该库旨在简化微服务之间的通信,提供统一的服务发现、路由和调用机制。
|
18 |
|
Noter.Microbridge.Extensions
Noter.Microbridge.Extensions 是一个用于微服务通信的扩展库,提供了微服务网关的客户端和服务实现。该库旨在简化微服务之间的通信,提供统一的服务发现、路由和调用机制。
|
8 |
|
Noter.Microbridge.Extensions
Noter.Microbridge.Extensions 是一个用于微服务通信的扩展库,提供了微服务网关的客户端和服务实现。该库旨在简化微服务之间的通信,提供统一的服务发现、路由和调用机制。
|
7 |
|
Noter.Microbridge.Extensions
Noter.Microbridge.Extensions 是一个用于微服务通信的扩展库,提供了微服务网关的客户端和服务实现。该库旨在简化微服务之间的通信,提供统一的服务发现、路由和调用机制。
|
6 |
|
Noter.Microbridge.Extensions
Noter.Microbridge.Extensions 是一个用于微服务通信的扩展库,提供了微服务网关的客户端和服务实现。该库旨在简化微服务之间的通信,提供统一的服务发现、路由和调用机制。
|
5 |
|
Noter.Microbridge.Extensions
Noter.Microbridge.Extensions 是一个用于微服务通信的扩展库,提供了微服务网关的客户端和服务实现。该库旨在简化微服务之间的通信,提供统一的服务发现、路由和调用机制。
|
4 |
|
Droplet.Entitys
水滴查询系统数据库项目实体类库
|
4 |
|
Noter.Microbridge.Extensions
Noter.Microbridge.Extensions 是一个用于微服务通信的扩展库,提供了微服务网关的客户端和服务实现。该库旨在简化微服务之间的通信,提供统一的服务发现、路由和调用机制。
|
3 |
|
Droplet.Entitys
水滴查询系统数据库项目实体类库
|
3 |
生成枚举的帮助类
This package has no dependencies.