扩展方法
本页列出 Apq.Cfg 提供的所有扩展方法。
CfgBuilder 扩展
本地配置源
AddJson
csharp
public static CfgBuilder AddJson(
this CfgBuilder builder,
string path,
int level,
bool writeable,
bool isPrimaryWriter = false,
bool optional = false,
bool reloadOnChange = false,
EncodingOptions? encoding = null)添加 JSON 文件配置源。
AddYaml
csharp
public static CfgBuilder AddYaml(
this CfgBuilder builder,
string path,
int level,
bool writeable,
bool isPrimaryWriter = false,
bool optional = false,
bool reloadOnChange = false,
EncodingOptions? encoding = null)添加 YAML 文件配置源。需要 Apq.Cfg.Yaml 包。
AddXml
csharp
public static CfgBuilder AddXml(
this CfgBuilder builder,
string path,
int level,
bool writeable,
bool isPrimaryWriter = false,
bool optional = false,
bool reloadOnChange = false,
EncodingOptions? encoding = null)添加 XML 文件配置源。需要 Apq.Cfg.Xml 包。
AddIni
csharp
public static CfgBuilder AddIni(
this CfgBuilder builder,
string path,
int level,
bool writeable,
bool isPrimaryWriter = false,
bool optional = false,
bool reloadOnChange = false,
EncodingOptions? encoding = null)添加 INI 文件配置源。需要 Apq.Cfg.Ini 包。
AddToml
csharp
public static CfgBuilder AddToml(
this CfgBuilder builder,
string path,
int level,
bool writeable,
bool isPrimaryWriter = false,
bool optional = false,
bool reloadOnChange = false,
EncodingOptions? encoding = null)添加 TOML 文件配置源。需要 Apq.Cfg.Toml 包。
AddEnvironmentVariables
csharp
public static CfgBuilder AddEnvironmentVariables(
this CfgBuilder builder,
int level,
string? prefix = null)添加环境变量配置源。
AddSource
csharp
public static CfgBuilder AddSource(
this CfgBuilder builder,
ICfgSource source)添加自定义配置源。
编码映射
AddReadEncodingMapping
csharp
public static CfgBuilder AddReadEncodingMapping(
this CfgBuilder builder,
string path,
Encoding encoding,
int priority = 100)添加读取编码映射(完整路径)。
AddReadEncodingMappingWildcard
csharp
public static CfgBuilder AddReadEncodingMappingWildcard(
this CfgBuilder builder,
string pattern,
Encoding encoding,
int priority = 0)添加读取编码映射(通配符)。
AddReadEncodingMappingRegex
csharp
public static CfgBuilder AddReadEncodingMappingRegex(
this CfgBuilder builder,
string pattern,
Encoding encoding,
int priority = 0)添加读取编码映射(正则表达式)。
AddWriteEncodingMapping / AddWriteEncodingMappingWildcard / AddWriteEncodingMappingRegex
与读取映射方法类似,用于配置写入编码映射。
ConfigureEncodingMapping
csharp
public static CfgBuilder ConfigureEncodingMapping(
this CfgBuilder builder,
Action<EncodingMappingConfig> configure)高级编码映射配置。
WithEncodingConfidenceThreshold
csharp
public static CfgBuilder WithEncodingConfidenceThreshold(
this CfgBuilder builder,
float threshold)设置编码检测置信度阈值。
WithEncodingDetectionLogging
csharp
public static CfgBuilder WithEncodingDetectionLogging(
this CfgBuilder builder,
Action<EncodingDetectionResult> logger)启用编码检测日志。
ServiceCollection 扩展
AddApqCfg
csharp
public static IServiceCollection AddApqCfg(
this IServiceCollection services,
Action<CfgBuilder> configure)注册 Apq.Cfg 到依赖注入容器。
示例:
csharp
services.AddApqCfg(cfg => cfg
.AddJson("config.json", level: 0, writeable: false)
.AddEnvironmentVariables(level: 1, prefix: "APP_"));ConfigureApqCfg
csharp
public static IServiceCollection ConfigureApqCfg<TOptions>(
this IServiceCollection services,
string sectionKey) where TOptions : class配置选项绑定。
示例:
csharp
services.ConfigureApqCfg<DatabaseOptions>("Database");使用示例
csharp
// 构建配置
var cfg = new CfgBuilder()
.AddJson("config.json", level: 0, writeable: false)
.AddYaml("config.yaml", level: 1, writeable: false, optional: true)
.AddSource(new ConsulCfgSource("http://consul:8500", "myapp/config", level: 10, writeable: false, watch: true))
.AddEnvironmentVariables(level: 20, prefix: "APP_")
.AddWriteEncodingMappingWildcard("*.ps1", new UTF8Encoding(true))
.Build();
// 读取配置
var host = cfg.Get("Database:Host");
var port = cfg.Get<int>("Database:Port");
// 检查配置是否存在
if (cfg.Exists("OptionalFeature"))
{
// 处理可选功能
}
// 获取配置节
var dbSection = cfg.GetSection("Database");
// 监听变更
cfg.ConfigChanges.Subscribe(e =>
{
Console.WriteLine($"配置已更新: {string.Join(", ", e.Changes.Keys)}");
});
// 依赖注入
services.AddApqCfg(builder => builder
.AddJson("config.json", level: 0, writeable: false));
services.ConfigureApqCfg<DatabaseOptions>("Database");