问题
I want to use record with JsonPropertyName attribute, but it caused an error. This is not supported? Any workaround?
public record QuoteResponse([JsonPropertyName("quotes")] IReadOnlyCollection<Quote>? Quotes);
Error CS0592 Attribute 'JsonPropertyName' is not valid on this declaration type. It is only valid on 'property, indexer, field' declarations.
回答1:
By default attributes on record parameters apply to the parameter. To make them apply to the property you have to prefix it with the property:
attribute location:
public record QuoteResponse([property: JsonPropertyName("quotes")] IReadOnlyCollection<Quote>? Quotes);
回答2:
There are 2 ways (that I know of) to create a record, the below will hopefully solve it for you.
public record QuoteResponse
{
[JsonPropertyName("quotes")]
public IReadOnlyCollection<Quote>? Quotes {get; init;}
}
来源:https://stackoverflow.com/questions/65219551/jsonpropertynameattribute-is-not-supported-record-from-c9