Anotação de dados de valor padrão para matriz vazia

votos
25

Estou criando um .NET Core Web API e quero chamar um endpoint enviando um pedido de cliente. A identificação do cliente vem como um parâmetro de rota. No corpo do pedido é possível enviar um array de objetos. Cada objeto contém o id do produto e sua quantidade. Mas este campo é opcional, encomendas vazias também são possíveis (produtos podem ser adicionados mais tarde).

Então eu comecei com 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 solicitação DTO deve tornar o OrderPositionscampo opcional, mas ao adicionar um item, ambas as propriedades são necessárias para esse item. Eu quero definir um valor padrão para OrderPositionsse faltar, então eu pensei que esta anotação de dados o faria

[DefaultValue(new OrderPosition[0])]

Infelizmente eu recebo esta mensagem de erro

Um argumento de atributo deve ser uma expressão constante, 'tipo de()' expressão ou criação de array expressão de um tipo de parâmetro de atributo

Então como você marca esse campo como opcional e define um valor padrão?

Publicado 04/06/2020 em 23:02
fonte usuário
Em outras línguas...                            

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