Status:
Install package : https://www.nuget.org/packages/PolymorphicContracts.TypeDiscriminatorSwaggerSetup.
- Clone locally this github repository
- Build the
PolymorphicContracts.TypeDiscriminatorSwaggerSetup.csprojproject
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);- Use same discriminator type. Whether it's all
string, whether it's allint. - Hierarchy root type must be
abstract recordorabstract 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:
Install package : https://www.nuget.org/packages/PolymorphicContracts.AutoFixture.
- Clone locally this github repository
- Build the
PolymorphicContracts.AutoFixture.csprojproject
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 CThen you can use this package like this:
fixture.CustomizePolymorphism<A>()
.WithDerivedType<B>()
.WithDerivedType<C>()
.BuildCustomization();