Ioptionssnapshot <t> .get (string? Name) возвращает экземпляр «по умолчанию», когда дано имя, для которого не было зарег ⇐ C#
-
Anonymous
Ioptionssnapshot <t> .get (string? Name) возвращает экземпляр «по умолчанию», когда дано имя, для которого не было зарег
ioptionssnapshot.get(string? Имя) возвращает экземпляр «по умолчанию»,
, когда дано имя, для которого не было зарегистрировано никаких параметров < /p>
< / / BlockQuote>
Приложение регистрирует только одну названную опцию с названием «Управление». UnassignedApplications < /code>. При вызове ioptionssnapshot .get () с неверным именем (не зарегистрировано), то метод возвращает экземпляр «по умолчанию», например, новые управляющие serviceoptions () .
Я хочу защитить приложение от неверных имен опций, поэтому я бы хотел, чтобы ioptionssnapshot .get () , чтобы бросить исключение на случай, если оно предоставит недопустимое имя.
Как я могу это достичь?services.AddOptions(GovernanceServiceOptions.UnassignedApplications)
.BindConfiguration(GovernanceServiceOptions.UnassignedApplications)
.ValidateDataAnnotations()
.ValidateOnStart();
Использование именованной опции :
var options = governanceServiceOptions.Get(GovernanceServiceOptions.UnassignedApplications);
Здесь управляющие serviceoptions тип ioptionssnapshot
IOptionsSnapshot:
public interface IOptionsSnapshot :
IOptions
where TOptions : class
{
///
/// Returns a configured instance with the given
.
///
/// The name of the instance, if is used.
/// The instance that matches the given .
TOptions Get(string? name);
}
< /code>
GovernanceServiceOptions:
public sealed record GovernanceServiceOptions
{
public static string UnassignedApplications => "GovernanceService:UnassignedApplications";
public static string StaleApplications => "GovernanceService:StaleApplications";
public static string StaleOrphanedApplications => "GovernanceService:StaleOrphanedApplications";
public bool Enabled { get; init; } = true;
public int NotificationIntervalInDays { get; init; } = 30;
public DryRunOptions DryRun { get; init; } = new();
public ProtectionOptions Protection { get; } = new();
}
public record DryRunOptions
{
public bool Enabled { get; init; }
public int? Percentage { get; init; }
public int? MaxCount { get; init; }
public List IncludeOwners { get; init; } = [];
}
public record ProtectionOptions
{
public int BatchSize { get; init; } = 20;
}
Подробнее здесь: https://stackoverflow.com/questions/793 ... en-given-a
ioptionssnapshot.get(string? Имя) возвращает экземпляр «по умолчанию»,
, когда дано имя, для которого не было зарегистрировано никаких параметров < /p>
< / / BlockQuote>
Приложение регистрирует только одну названную опцию с названием «Управление». UnassignedApplications < /code>. При вызове ioptionssnapshot .get () с неверным именем (не зарегистрировано), то метод возвращает экземпляр «по умолчанию», например, новые управляющие serviceoptions () .
Я хочу защитить приложение от неверных имен опций, поэтому я бы хотел, чтобы ioptionssnapshot .get () , чтобы бросить исключение на случай, если оно предоставит недопустимое имя.
Как я могу это достичь?services.AddOptions(GovernanceServiceOptions.UnassignedApplications)
.BindConfiguration(GovernanceServiceOptions.UnassignedApplications)
.ValidateDataAnnotations()
.ValidateOnStart();
Использование именованной опции :
var options = governanceServiceOptions.Get(GovernanceServiceOptions.UnassignedApplications);
Здесь управляющие serviceoptions тип ioptionssnapshot
IOptionsSnapshot:
public interface IOptionsSnapshot :
IOptions
where TOptions : class
{
///
/// Returns a configured instance with the given
.
///
/// The name of the instance, if is used.
/// The instance that matches the given .
TOptions Get(string? name);
}
< /code>
GovernanceServiceOptions:
public sealed record GovernanceServiceOptions
{
public static string UnassignedApplications => "GovernanceService:UnassignedApplications";
public static string StaleApplications => "GovernanceService:StaleApplications";
public static string StaleOrphanedApplications => "GovernanceService:StaleOrphanedApplications";
public bool Enabled { get; init; } = true;
public int NotificationIntervalInDays { get; init; } = 30;
public DryRunOptions DryRun { get; init; } = new();
public ProtectionOptions Protection { get; } = new();
}
public record DryRunOptions
{
public bool Enabled { get; init; }
public int? Percentage { get; init; }
public int? MaxCount { get; init; }
public List IncludeOwners { get; init; } = [];
}
public record ProtectionOptions
{
public int BatchSize { get; init; } = 20;
}
Подробнее здесь: https://stackoverflow.com/questions/793 ... en-given-a
Мобильная версия