Skip to content

Allow overriding generic types #180

Description

@Tarmil

Allow using typedefof to override options for all instances of a generic type. Example:

let options =
    FSharpJsonOptions()
        .WithOverrides(fun o -> dict [ typedefof<Result<_, _>>, o.WithUnionTagName("Result") ])
        .ToJsonSerializerOptions()

JsonSerializer.Serialize((Ok "test": Result<string, string>), o)
// --> {"Result":"Ok","Fields":["test"]}
  • Q: What should happen if a type is matched by both a generic and a specific override?
    A: Only the specific one is taken into account.

    Example:

    let options =
        FSharpJsonOptions()
            .WithOverrides(fun o -> dict [
                typedefof<Result<_, _>>, o.WithUnionTagName("GenericCase")
                typedof<Result<string, string>>, o.WithUnionTagName("SpecificFields")
            ])
            .ToJsonSerializerOptions()
    
    JsonSerializer.Serialize((Ok "test": Result<string, string>), o)
    // --> {"Case":"Ok","SpecificFields":["test"]}

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions