Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

253
Vistas
¿Cómo verificar si los parámetros son nulos cuando se usan constructores de registros posicionales y/o propiedades de inicio?

Me gustaría verificar que no se asignen parámetros nulos a los campos de registro y permitir que las propiedades tengan comentarios. Descubrí que el siguiente arreglo es el truco para los comentarios, pero me faltan ideas para verificar los parámetros nulos sin convertir este registro en una clase.

Entonces, una pregunta: ¿Es posible verificar durante el tiempo de ejecución que no se asignarán valores nulos a los campos de registro? Si es así, ¿cómo podría uno hacerlo mientras todavía usa registros?

 public record Test(string TestString) { /// <summary> /// This is one way to get a comment on record properties. Are there others? /// </summary> public string TestString { get; init; } = TestString; }

El código también es esencial aquí .

Esta es una adición, pero tal vez ayude con la respuesta aceptada y el comentario de un código diferente.

Fue porque el código en esencia hizo una verificación nula como

 public record Test(string TestString) { /// <summary> /// This is one way to get a comment on record properties. Are there others? /// </summary> public string TestString { get; init; } = TestString ?? throw new ArgumentNullException(); }

Por una razón u otra, no incluí esta reflexión en la pregunta original si tal vez haya un camino más corto. :)

<editar: La ArgumentNullException.ThrowIfNull(obj) de .NET 6 podría ser útil aquí (o ThrowHelper).

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Tiene que manejar cheques durante la asignación en línea, como ya descubrió en su esencia.

Una posibilidad es llamar a un método de extensión para envolver cualquier comportamiento.

 public record Test(string TestString) { /// <summary> /// This is one way to get a comment on record properties. Are there others? /// </summary> public string TestString { get; init; } = ValidationExtensions.Validate(TestString); } public static class ValidationExtensions { public static string Validate(string input) { if (string.IsNullOrEmpty(input)) throw new NullReferenceException(); return input; } }

Esto arrojará correctamente durante la inicialización del registro:

 var x = new Test(null);
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda