Esto puede parecer una locura, pero escúchame...
Tengo un método que viola https://rules.sonarsource.com/csharp/RSPEC-4457
La validación de parámetros en los métodos "async"/"await" debe ajustarse
... dividir el método en dos: un método externo que maneja las comprobaciones de parámetros (sin ser asíncrono/en espera) y un método interno para manejar el bloque iterador con el patrón asíncrono/en espera...
Una tarea asíncrona que comprueba los argumentos y realiza una lógica asíncrona
Así que dividí el método en dos como sugiere, uno verificando argumentos nulos y otro realizando la lógica
private Task ThisMethod(string value) { if(value == null) throw new ArgumentException(nameof(value)); return ThisMethodAsync(value); } private async Task ThisMethod(string value) { //async logic }El problema que tengo ahora es que realmente no quiero que ese segundo método se llame de forma aislada ya que las comprobaciones no se realizarán, quiero que sea un método lógico pero lo he dividido como se sugiere
¿Hay alguna manera de limitar que se llame a este segundo método a menos que se llame desde el primer método? ¿Un atributo ingenioso que desconozco quizás? ¿Un modificador de acceso más estricto que privado?