OneOf.Extensions.Blazor 0.0.1-alpha

This is a prerelease version of OneOf.Extensions.Blazor.
dotnet add package OneOf.Extensions.Blazor --version 0.0.1-alpha
NuGet\Install-Package OneOf.Extensions.Blazor -Version 0.0.1-alpha
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="OneOf.Extensions.Blazor" Version="0.0.1-alpha" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add OneOf.Extensions.Blazor --version 0.0.1-alpha
#r "nuget: OneOf.Extensions.Blazor, 0.0.1-alpha"
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install OneOf.Extensions.Blazor as a Cake Addin
#addin nuget:?package=OneOf.Extensions.Blazor&version=0.0.1-alpha&prerelease

// Install OneOf.Extensions.Blazor as a Cake Tool
#tool nuget:?package=OneOf.Extensions.Blazor&version=0.0.1-alpha&prerelease

OneOf.Extensions.Blazor

A collection of Blazor components for working with OneOf types in your Blazor project.

🤔 Why?

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.

⭐ Features

  • Blazor components for OneOf types with up to 8 type parameters.
  • Blazor components for types that inherit from OneOfBase, also with up to 8 type parameters.

That's, that's it. It's a pretty simple library 😁

💿 Installation

Install the OneOf.Extensions.Blazor NuGet package.

dotnet add package OneOf.Extensions.Blazor

🚀 Usage

See 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 OneOf.Extensions.Blazor

Then 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>

🐛 Bugs, feature requests, and contributions

If you find a bug or have a feature request, please open an issue.

Pull requests are also welcome 😊

Product Compatible and additional computed target framework versions.
.NET net8.0 is compatible.  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. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
0.0.1-alpha 0 1/26/2024