.net 如何让运行时为[CommandOption]计算DefaultValue?

dgsult0t  于 2023-03-24  发布在  .NET
关注(0)|答案(1)|浏览(118)

我正在使用spectre.console。我有以下CommandSettings:

public class LogCommandSettings : CommandSettings
{
    [CommandOption("--logFile")]
    [Description("Path and file name for logging")]
    [DefaultValue("application.log")]
    public string LogFile { get; set; }
}

我可以使用[DefaultValue]属性设置CommandOption的默认值。但是在这种情况下,我想计算默认路径运行时,说当前用户的临时文件夹
当然,我可以在应用程序中的某个地方这样做,但如何将其实际的默认值将显示内置的帮助?

cclgggtu

cclgggtu1#

您可以尝试实现ParameterValueProviderAttribute

class MyDynamicParameterValueProviderAttribute : ParameterValueProviderAttribute
{
    public override bool TryGetValue(CommandParameterContext context, out object? result)
    {
        result = context.Value ?? "some generated dynamic value";
        return true;
    }
}

public class LogCommandSettings : CommandSettings
{
    [CommandOption("--logFile")]
    [Description("Path and file name for logging")]
    [MyDynamicParameterValueProvider]
    public string LogFile { get; set; }
}

相关问题