Standardwert-Datenbeschriftung für leeres Array

stimmen
25

Ich erstelle eine .NET Core-Web-API und möchte einen Endpunkt aufrufen, der eine Kundenbestellung aufgibt. Die Kunden-ID kommt als Routenparameter. Im Hauptteil der Anforderung ist es möglich, ein Array von Objekten zu senden. Jedes Objekt enthält die Produkt-ID und ihre Menge. Aber dieses Feld ist optional, auch leere Bestellungen sind möglich (Produkte können später hinzugefügt werden).

Also begann ich mit dieser 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; }
}

Diese DTO-Anforderung sollte das OrderPositionsFeld optional machen, aber beim Hinzufügen eines Artikels sind beide Eigenschaften für diesen Artikel erforderlich. Ich möchte einen Standardwert für OrderPositionsfalls fehlend festlegen, daher dachte ich, diese Datenanmerkung würde dies tun

[DefaultValue(new OrderPosition[0])]

Leider erhalte ich diese Fehlermeldung

Ein Attribut-Argument muss ein konstanter Ausdruck sein, 'typeof()' ausdruck oder Array-Erzeugungsausdruck eines Attributparametertyps

Wie markieren Sie also dieses Feld als optional und setzen einen Standardwert?

Veröffentlicht am 04/06/2020 um 23:02
quelle vom benutzer
In anderen Sprachen...                            

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