Class CfgBuilder
配置构建器,用于创建和管理配置源
public sealed class CfgBuilder
- Inheritance
-
CfgBuilder
- Inherited Members
- Extension Methods
Methods
AddEnvironmentVariables(int, string?, string?)
添加环境变量配置源
public CfgBuilder AddEnvironmentVariables(int level = 400, string? prefix = null, string? name = null)
Parameters
levelint配置层级,数值越大优先级越高,默认为 EnvironmentVariables (20)
prefixstring环境变量前缀,为null时加载所有环境变量
namestring配置源名称,为 null 时自动生成
Returns
- CfgBuilder
配置构建器实例,支持链式调用
Examples
var cfg = new CfgBuilder()
.AddJsonFile("config.json")
.AddEnvironmentVariables(prefix: "APP_") // 使用默认层级 20
.Build();
AddJsonFile(string, int, bool, bool, bool, bool, EncodingOptions?, string?)
添加JSON文件配置源
public CfgBuilder AddJsonFile(string path, int level = 0, bool writeable = false, bool optional = true, bool reloadOnChange = true, bool isPrimaryWriter = false, EncodingOptions? encoding = null, string? name = null)
Parameters
pathstringJSON文件路径
levelint配置层级,数值越大优先级越高,默认为 Json (0)
writeablebool是否可写,默认为false
optionalbool是否为可选文件,默认为true
reloadOnChangebool文件变更时是否自动重载,默认为true
isPrimaryWriterbool是否为主要写入器,默认为false
encodingEncodingOptions编码选项,默认为null
namestring配置源名称,为 null 时使用文件名
Returns
- CfgBuilder
配置构建器实例,支持链式调用
Examples
var cfg = new CfgBuilder()
.AddJsonFile("config.json") // 使用默认层级 0
.AddJsonFile("config.local.json", level: 5, writeable: true, isPrimaryWriter: true)
.Build();
AddReadEncodingMapping(string, Encoding, int)
添加读取编码映射(完整路径)
public CfgBuilder AddReadEncodingMapping(string filePath, Encoding encoding, int priority = 100)
Parameters
Returns
AddReadEncodingMappingRegex(string, Encoding, int)
添加读取编码映射(正则表达式)
public CfgBuilder AddReadEncodingMappingRegex(string regexPattern, Encoding encoding, int priority = 0)
Parameters
Returns
AddReadEncodingMappingWildcard(string, Encoding, int)
添加读取编码映射(通配符)
public CfgBuilder AddReadEncodingMappingWildcard(string pattern, Encoding encoding, int priority = 0)
Parameters
patternstring通配符模式(如 ".json"、"config/.xml"、"**/*.txt")
encodingEncoding编码
priorityint优先级(数值越大优先级越高,默认 0)
Returns
AddSource(ICfgSource, string?)
添加自定义配置源(供扩展包使用)
public CfgBuilder AddSource(ICfgSource source, string? name = null)
Parameters
sourceICfgSource配置源实例,实现 ICfgSource 接口
namestring配置源名称,为 null 时使用配置源自身的 Name 属性
Returns
- CfgBuilder
配置构建器实例,支持链式调用
Examples
// 添加自定义配置源
var customSource = new CustomCfgSource();
var cfg = new CfgBuilder()
.AddJsonFile("config.json", level: 0)
.AddSource(customSource)
.Build();
AddValidation(Action<ConfigValidationBuilder>)
添加配置验证规则
public CfgBuilder AddValidation(Action<ConfigValidationBuilder> configure)
Parameters
configureAction<ConfigValidationBuilder>验证规则配置委托
Returns
- CfgBuilder
配置构建器实例,支持链式调用
Examples
var cfg = new CfgBuilder()
.AddJsonFile("config.json", level: 0)
.AddValidation(v => v
.Required("Database:ConnectionString")
.Range("Database:Port", 1, 65535)
.Regex("App:Email", @"^[\w-\.]+@([\w-]+\.)+[\w-]{2,4}$"))
.Build();
AddValidator(IConfigValidator)
添加自定义验证器
public CfgBuilder AddValidator(IConfigValidator validator)
Parameters
validatorIConfigValidator验证器实例
Returns
- CfgBuilder
配置构建器实例,支持链式调用
AddValueMasker(IValueMasker)
添加值脱敏器(供扩展包使用)
public CfgBuilder AddValueMasker(IValueMasker masker)
Parameters
maskerIValueMasker值脱敏器实例
Returns
- CfgBuilder
配置构建器实例,支持链式调用
Examples
var cfg = new CfgBuilder()
.AddJsonFile("config.json", level: 0)
.AddValueMasker(new SensitiveMasker())
.Build();
AddValueTransformer(IValueTransformer)
添加值转换器(供扩展包使用)
public CfgBuilder AddValueTransformer(IValueTransformer transformer)
Parameters
transformerIValueTransformer值转换器实例
Returns
- CfgBuilder
配置构建器实例,支持链式调用
Examples
var cfg = new CfgBuilder()
.AddJsonFile("config.json", level: 0)
.AddValueTransformer(new EncryptionTransformer(provider))
.Build();
AddWriteEncodingMapping(string, Encoding, int)
添加写入编码映射(完整路径)
public CfgBuilder AddWriteEncodingMapping(string filePath, Encoding encoding, int priority = 100)
Parameters
Returns
AddWriteEncodingMappingRegex(string, Encoding, int)
添加写入编码映射(正则表达式)
public CfgBuilder AddWriteEncodingMappingRegex(string regexPattern, Encoding encoding, int priority = 0)
Parameters
Returns
AddWriteEncodingMappingWildcard(string, Encoding, int)
添加写入编码映射(通配符)
public CfgBuilder AddWriteEncodingMappingWildcard(string pattern, Encoding encoding, int priority = 0)
Parameters
patternstring通配符模式(如 ".json"、"config/.xml"、"**/*.txt")
encodingEncoding编码
priorityint优先级(数值越大优先级越高,默认 0)
Returns
Build()
构建配置根实例
public ICfgRoot Build()
Returns
BuildAndValidate(bool)
构建配置根实例并验证
public (ICfgRoot Config, ValidationResult Result) BuildAndValidate(bool throwOnError = true)
Parameters
throwOnErrorbool验证失败时是否抛出异常,默认为 true
Returns
- (ICfgRoot Config, ValidationResult Result)
配置根实例和验证结果的元组
Examples
// 构建并验证,失败时抛出异常
var cfg = new CfgBuilder()
.AddJsonFile("config.json", level: 0)
.AddValidation(v => v.Required("Database:ConnectionString"))
.BuildAndValidate();
// 构建并验证,不抛出异常
var (cfg2, result) = new CfgBuilder()
.AddJsonFile("config.json", level: 0)
.AddValidation(v => v.Required("Database:ConnectionString"))
.BuildAndValidate(throwOnError: false);
if (!result.IsValid)
{
// 处理验证错误
}
Exceptions
- ConfigValidationException
当 throwOnError 为 true 且验证失败时抛出
ConfigureEncodingMapping(Action<EncodingMappingConfig>)
配置编码映射(使用 Action 委托进行更复杂的配置)
public CfgBuilder ConfigureEncodingMapping(Action<EncodingMappingConfig> configure)
Parameters
configureAction<EncodingMappingConfig>配置委托
Returns
ConfigureValueTransformer(Action<ValueTransformerOptions>)
配置值转换选项
public CfgBuilder ConfigureValueTransformer(Action<ValueTransformerOptions> configure)
Parameters
configureAction<ValueTransformerOptions>配置委托
Returns
- CfgBuilder
配置构建器实例,支持链式调用
Examples
var cfg = new CfgBuilder()
.AddJsonFile("config.json", level: 0)
.ConfigureValueTransformer(options =>
{
options.EncryptedPrefix = "[ENCRYPTED]";
options.SensitiveKeyPatterns.Add("*ApiSecret*");
})
.Build();
WithEncodingConfidenceThreshold(float)
设置编码检测置信度阈值(0.0-1.0)
public CfgBuilder WithEncodingConfidenceThreshold(float threshold)
Parameters
thresholdfloat置信度阈值,范围 0.0-1.0,默认 0.6
Returns
WithEncodingDetectionLogging(Action<EncodingDetectionResult>)
启用编码检测日志
public CfgBuilder WithEncodingDetectionLogging(Action<EncodingDetectionResult> handler)
Parameters
handlerAction<EncodingDetectionResult>日志处理器