Ioptionssnapshot <t> .get (string? Name) возвращает экземпляр «по умолчанию», когда дано имя, для которого не было зарегC#

Место общения программистов C#
Ответить
Anonymous
 Ioptionssnapshot <t> .get (string? Name) возвращает экземпляр «по умолчанию», когда дано имя, для которого не было зарег

Сообщение Anonymous »


ioptionssnapshot.get(string? Имя) возвращает экземпляр «по умолчанию»,
, когда дано имя, для которого не было зарегистрировано никаких параметров < /p>
< / / BlockQuote>
Приложение регистрирует только одну названную опцию с названием «Управление». UnassignedApplications < /code>. При вызове ioptionssnapshot .get () с неверным именем (не зарегистрировано), то метод возвращает экземпляр «по умолчанию», например, новые управляющие serviceoptions () .
Я хочу защитить приложение от неверных имен опций, поэтому я бы хотел, чтобы ioptionssnapshot .get () , чтобы бросить исключение на случай, если оно предоставит недопустимое имя.
Как я могу это достичь?services.AddOptions(GovernanceServiceOptions.UnassignedApplications)
.BindConfiguration(GovernanceServiceOptions.UnassignedApplications)
.ValidateDataAnnotations()
.ValidateOnStart();
< /code>
Использование параметра с именем: < /p>
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>
Управление SpearceOptions: < /p>
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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»