Annotazione dei dati dei valori di default per l'array vuoto

voti
25

Sto creando una API Web Core .NET e voglio chiamare un endpoint inviando un ordine del cliente. L'id del cliente viene fornito come parametro di percorso. Nel corpo della richiesta è possibile inviare un array di oggetti. Ogni oggetto contiene l'id del prodotto e la sua quantità. Ma questo campo è opzionale, sono possibili anche ordini vuoti (i prodotti possono essere aggiunti in seguito).

Così ho iniziato con questo 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; }
}

Questa richiesta DTO dovrebbe rendere il OrderPositionscampo opzionale, ma quando si aggiunge un elemento, entrambe le proprietà sono richieste per quell'elemento. Voglio impostare un valore predefinito per OrderPositionsse mancante, quindi ho pensato che questa annotazione dei dati lo facesse

[DefaultValue(new OrderPosition[0])]

Purtroppo ricevo questo messaggio di errore

Un argomento di attributo deve essere un'espressione costante, 'typeof()' espressione o creazione di un array espressione di un tipo di parametro di attributo

Quindi come si fa a contrassegnare quel campo come opzionale e a impostare un valore predefinito?

È pubblicato 04/06/2020 alle 23:02
fonte dall'utente
In altre lingue...                            

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