Netor.Extensions.EnumSourceGenerator 1.0.6

Netor.Extensions.EnumSourceGenerator

Netor.Extensions.EnumSourceGenerator 是一个基于 Roslyn 的增量源代码生成器,用于为枚举类型生成一组实用的扩展方法,帮助开发者更高效地操作枚举。

功能

该生成器会为项目中的每个枚举类型自动生成以下扩展方法:

  1. ToDictionary

    • 返回一个只读字典,其中键是枚举成员的名称,值是枚举值的字符串形式。
  2. ToIntegers

    • 返回一个只读字典,其中键是枚举成员的名称,值是枚举值的 int 类型。
  3. ToBytes

    • 返回一个只读字典,其中键是枚举成员的名称,值是枚举值的 byte 类型。
  4. ToDisplays

    • 返回一个只读字典,其中键是枚举项,值是其 Display 属性的 Name 值。
    • 如果未定义 Display 属性,则返回枚举项的名称。
  5. Display

    • 返回枚举项的 Display 属性的 Name 值。
    • 如果未定义 Display 属性,则返回枚举项的名称。

使用方法

  1. 安装 NuGet 包 在项目中安装 Netor.Extensions.EnumSourceGenerator NuGet 包: dotnet add package Netor.Extensions.EnumSourceGenerator

  2. 定义枚举 在代码中定义枚举类型,例如:

     public enum AccountType { 
     	[Display(Name = "Savings Account")] 
     	Savings,
        [Display(Name = "Checking Account")]
        Checking,
        [Display(Name = "Loan")]
        Loan
     }
    
  3. 使用生成的扩展方法 编译后,生成器会为每个枚举类型生成扩展方法。例如:

     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.

Version Downloads Last updated
1.0.6 29 09/23/2025
1.0.5 13 09/02/2025
1.0.4 7 09/02/2025
1.0.3 13 08/18/2025
1.0.2 7 08/18/2025
1.0.1 17 08/18/2025