Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/stefh/anyof
Use the AnyOf<TFirst, TSecond, ...> type to handle multiple defined types as input parameters or return values for methods.
https://github.com/stefh/anyof
anyof multiple type typed types
Last synced: 12 days ago
JSON representation
Use the AnyOf<TFirst, TSecond, ...> type to handle multiple defined types as input parameters or return values for methods.
- Host: GitHub
- URL: https://github.com/stefh/anyof
- Owner: StefH
- License: mit
- Created: 2021-07-04T12:49:51.000Z (over 3 years ago)
- Default Branch: main
- Last Pushed: 2024-09-30T15:50:38.000Z (about 1 month ago)
- Last Synced: 2024-10-29T11:12:38.187Z (15 days ago)
- Topics: anyof, multiple, type, typed, types
- Language: C#
- Homepage:
- Size: 137 KB
- Stars: 109
- Watchers: 8
- Forks: 8
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- Funding: .github/FUNDING.yml
- License: LICENSE
Awesome Lists containing this project
README
# AnyOf
Use the `AnyOf` type to handle multiple defined types as input parameters for methods.This project uses code generation to generate up to 10 AnyOf-types:
- `AnyOf`
- `AnyOf`
- `AnyOf`
- ...# Install
## The normal version:
[![NuGet Badge](https://img.shields.io/nuget/v/AnyOf)](https://www.nuget.org/packages/AnyOf)## The source-generator version:
[![NuGet Badge](https://img.shields.io/nuget/v/AnyOf.SourceGenerator)](https://www.nuget.org/packages/AnyOf.SourceGenerator)## AnyOf.Newtonsoft.Json
This package can be used to serialize/deserialize (with Newtonsoft.Json) an object which contains an AnyOf-type.
For more details see [wiki : AnyOf.Newtonsoft.Json](https://github.com/StefH/AnyOf/wiki/AnyOf.Newtonsoft.Json)[![NuGet Badge](https://img.shields.io/nuget/v/AnyOf.Newtonsoft.Json)](https://www.nuget.org/packages/AnyOf.Newtonsoft.Json)
## AnyOf.System.Text.Json
This package can be used to serialize/deserialize (with System.Text.Json) an object which contains an AnyOf-type.
For more details see [wiki : AnyOf.System.Text.Json](https://github.com/StefH/AnyOf/wiki/AnyOf.System.Text.Json)[![NuGet Badge](https://img.shields.io/nuget/v/AnyOf.System.Text.Json)](https://www.nuget.org/packages/AnyOf.System.Text.Json)
# Usage
``` c#
using System;
using AnyOfTypes;namespace ConsoleAppConsumer
{
internal class Program
{
private static void Main(string[] args)
{
Console.WriteLine(ReturnSomething().CurrentValue);X(42);
X("test");
}// This method returns an string, int or bool in a random way.
private static AnyOf ReturnSomething()
{
return new Random().Next(3) switch
{
1 => "test",
2 => 42,
_ => true,
};
}// This method accepts only an int and a string.
private static void X(AnyOf value)
{
Console.WriteLine("ToString " + value.ToString());
Console.WriteLine("CurrentValue " + value.CurrentValue);
Console.WriteLine("IsUndefined " + value.IsUndefined);
Console.WriteLine("IsFirst " + value.IsFirst);
Console.WriteLine("IsSecond " + value.IsSecond);switch (value.CurrentType)
{
case AnyOfType.First:
Console.WriteLine("AnyOfType = First with value " + value.First);
break;case AnyOfType.Second:
Console.WriteLine("AnyOfType = Second with value " + value.Second);
break;default:
Console.WriteLine("???");
break;
}
}
}
}
```