Anotación de datos de valor predeterminado para la matriz vacía

votos
25

Estoy creando una API Web Core de .NET y quiero llamar a un punto final para hacer un pedido a un cliente. La identificación del cliente viene como un parámetro de ruta. En el cuerpo de la solicitud es posible enviar un conjunto de objetos. Cada objeto contiene el id de producto y su cantidad. Pero este campo es opcional, los pedidos vacíos también son posibles (los productos se pueden añadir más adelante).

Así que empecé con este DTO

public class CreateCustomerOrderByIdDto
{
    [FromRoute]
    public uint Id { get; set; }

    [FromBody]
    public OrderPosition[] OrderPositions { get; set; }
}

public class OrderPosition
{
    [Range(1, uint.MaxValue)]
    public uint ProductId { get; set; }

    [Range(1, uint.MaxValue)]
    public uint Amount { get; set; }
}

Esta solicitud DTO debería hacer que el OrderPositionscampo sea opcional, pero cuando se añade un artículo, ambas propiedades son necesarias para ese artículo. Quiero establecer un valor por defecto para OrderPositionssi falta, así que pensé que esta anotación de datos lo haría

[DefaultValue(new OrderPosition[0])]

Desafortunadamente recibo este mensaje de error

Un argumento de atributo debe ser una expresión constante, typeof() expresión o creación de un arreglo expresión de un tipo de parámetro de atributo

Entonces, ¿cómo se marca ese campo como opcional y se establece un valor por defecto?

Publicado el 04/06/2020 a las 23:02
fuente por usuario
En otros idiomas...                            

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more