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).
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);