PolymorphicContracts.TypeDiscriminatorSwaggerSetup
2.0.0
dotnet add package PolymorphicContracts.TypeDiscriminatorSwaggerSetup --version 2.0.0
NuGet\Install-Package PolymorphicContracts.TypeDiscriminatorSwaggerSetup -Version 2.0.0
<PackageReference Include="PolymorphicContracts.TypeDiscriminatorSwaggerSetup" Version="2.0.0" />
paket add PolymorphicContracts.TypeDiscriminatorSwaggerSetup --version 2.0.0
#r "nuget: PolymorphicContracts.TypeDiscriminatorSwaggerSetup, 2.0.0"
// Install PolymorphicContracts.TypeDiscriminatorSwaggerSetup as a Cake Addin #addin nuget:?package=PolymorphicContracts.TypeDiscriminatorSwaggerSetup&version=2.0.0 // Install PolymorphicContracts.TypeDiscriminatorSwaggerSetup as a Cake Tool #tool nuget:?package=PolymorphicContracts.TypeDiscriminatorSwaggerSetup&version=2.0.0
Status:
PolymorphicContracts.TypeDiscriminatorSwaggerSetup
Installation
NuGet
Install package : https://www.nuget.org/packages/PolymorphicContracts.TypeDiscriminatorSwaggerSetup.
GitHub
- Clone locally this github repository
- Build the
PolymorphicContracts.TypeDiscriminatorSwaggerSetup.csproj
project
Usage
In your ASP.NET Core 7 project choose assemblies, that contains hierarchies marked with JsonDerivedTypeAttribute
.
List them in appsettings.json
files as follows:
{
//... your config
"JsonHierarchies": {
"Assemblies": [
"PolymorphicContracts.Models"
]
}
}
Then, while configuring services, after adding SwaggerGen call special extension:
builder.Services.AddTypeDiscriminatorToSwagger(builder.Configuration);
Rules for hierarchies
- Use same discriminator type. Whether it's all
string
, whether it's allint
. - Hierarchy root type must be
abstract record
orabstract class
. - Hierarchy must be "flat", i.e. you inherit only hierarchy root.
Wrong hierarchy example, breaking all rules:
[JsonDerivedType(typeof(DerivedFirst), typeDiscriminator: 1)]
[JsonDerivedType(typeof(DerivedSecond), typeDiscriminator: "2")]
interface IBase
{
}
record DerivedFirst : IBase;
record DerivedSecond : DerivedFirst;
Status:
PolymorphicContracts.AutoFixture
Installation
NuGet
Install package : https://www.nuget.org/packages/PolymorphicContracts.AutoFixture.
GitHub
- Clone locally this github repository
- Build the
PolymorphicContracts.AutoFixture.csproj
project
Usage
Let's say you have an hierarchy like this:
abstract class A { }
class B : A { }
class C : A { }
And you want call fixture to create instance of any random derived type like this:
fixture.Create<A>(); // B or C
Then you can use this package like this:
fixture.CustomizePolymorphism<A>()
.WithDerivedType<B>()
.WithDerivedType<C>()
.BuildCustomization();
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net6.0 is compatible. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 is compatible. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. |
-
net6.0
- No dependencies.
-
net7.0
- No dependencies.
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.