A collection of Blazor components for working with OneOf types in your Blazor project.
I was working on a project where I needed to render different components based on the value of a OneOf.
I couldn't get the OneOf.Switch() method to work in Blazor, and writing switch statements over and over again
was annoying and looked messy.
Instead I made a component library, which is actually just a switch statement in disguise, and found it made my Blazor components much more readable and in general nicer to work with.
- Blazor components for
OneOftypes with up to 8 type parameters. - Blazor components for types that inherit from
OneOfBase, also with up to 8 type parameters.
That's it. It's a pretty simple library 😁
Install the Fenris.OneOfContrib.Blazor NuGet package.
dotnet add package Fenris.OneOfContrib.BlazorSee the Examples project for a full, simple example.
Let's make a small example where we have to deal with a OneOf<string, int>.
First, add the using either to your _Imports.razor file, or directly in your specific pages/components:
@using Fenris.OneOfContrib.Blazor.ComponentsThen use the component in your blazor pages or components
<OneOfSwitch2 Value="myOneOf">
<T0Template>
<p>It's a string and the value is @context!</p>
</T0Template>
<T1Template>
<p>It's an int and the value is @context!</p>
</T1Template>
</OneOfSwitch2>
@code {
private OneOf<string, int> myOneOf = "Hello World!";
}If you are using a OneOfBase type, you need to use the <OneOfBaseSwitch2> component instead. Everything else is
identical.
If your union contains more than two types, you need to use the <OneOfSwitchN> or <OneOfBaseSwitchN> components,
where N is the number of types in your union. E.g. <OneOfSwitch5>
If you find a bug or have a feature request, please open an issue.
Pull requests are also welcome 😊