Rop.OneOfExtension.Annotations
1.0.2
See the version list below for details.
dotnet add package Rop.OneOfExtension.Annotations --version 1.0.2
NuGet\Install-Package Rop.OneOfExtension.Annotations -Version 1.0.2
<PackageReference Include="Rop.OneOfExtension.Annotations" Version="1.0.2" />
paket add Rop.OneOfExtension.Annotations --version 1.0.2
#r "nuget: Rop.OneOfExtension.Annotations, 1.0.2"
// Install Rop.OneOfExtension.Annotations as a Cake Addin #addin nuget:?package=Rop.OneOfExtension.Annotations&version=1.0.2 // Install Rop.OneOfExtension.Annotations as a Cake Tool #tool nuget:?package=Rop.OneOfExtension.Annotations&version=1.0.2
Rop.OneOfExtensionGenerator
Features
Rop.OneOfExtensionGenerator is a source generator solution to use OneOf variables with static extension classes
Rop.OneOfExtension.Annotations
Interfaces to decorate the static helper classes as a class with OneOf methods.
[AttributeUsage(AttributeTargets.Class)]
public class OneOfExtensionAttribute:Attribute
{
}
[AttributeUsage(AttributeTargets.Method)]
public class OneOfSplitAttribute:Attribute
{
}
OneOfExtension
decorate the static partial class
OneOfSplit
decorate the OneOf Methods to split in final methods (one for each oneof generic type )
Rop.OneOfExtensionGenerator
The source generator that create the helper methods. Must be included as:
- OutputItemType="Analyzer"
- ReferenceOutputAssembly="false"
Test.OneOfExtensionGenerator
An example to test the generator.
- Create a partial static class decorated as "OneOfExtension" and with private methods with first type as "this OneOf<A,B,...>"
[OneOfExtension]
public static partial class MyHelper{
[OneOfSplit]
private static string _WriteValueABC(this OneOf<A, B, C> abc)
{
return abc.Match(a => a.WriteValueA, b => b.WriteValueB, c => c.WriteValueC);
}
[OneOfSplit]
private static string _WriteValueAB(this OneOf<A, B> ab)
{
return ab.Match(a => a.WriteValueA, b => b.WriteValueB);
}
}
- Source Generator create Proxy Methods as public static methods for each generic type in the "OneOf" parameter
// Autogenerated code for spliting OneOf Extensions
using OneOf;
using Rop.OneOfExtension.Annotations;
namespace Test.OneOfExtensionGenerator
{
public static partial class MyHelper
{
public static string WriteValueABC(this A abc)
{
return _WriteValueABC(abc);
}
public static string WriteValueABC(this B abc)
{
return _WriteValueABC(abc);
}
public static string WriteValueABC(this C abc)
{
return _WriteValueABC(abc);
}
public static string WriteValueAB(this A ab)
{
return _WriteValueAB(ab);
}
public static string WriteValueAB(this B ab)
{
return _WriteValueAB(ab);
}
}
}
- Use new extensions methods
var a=new A();
var b=new B();
var c=new C();
Console.WriteLine(a.WriteValueABC());
Console.WriteLine(b.WriteValueABC());
Console.WriteLine(c.WriteValueABC());
Console.WriteLine(a.WriteValueAB());
Console.WriteLine(b.WriteValueAB());
(C)2022 Ramón Ordiales Plaza
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. 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 was computed. 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. |
.NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
.NET Standard | netstandard2.0 is compatible. netstandard2.1 was computed. |
.NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
MonoAndroid | monoandroid was computed. |
MonoMac | monomac was computed. |
MonoTouch | monotouch was computed. |
Tizen | tizen40 was computed. tizen60 was computed. |
Xamarin.iOS | xamarinios was computed. |
Xamarin.Mac | xamarinmac was computed. |
Xamarin.TVOS | xamarintvos was computed. |
Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETStandard 2.0
- No dependencies.
NuGet packages (4)
Showing the top 4 NuGet packages that depend on Rop.OneOfExtension.Annotations:
Package | Downloads |
---|---|
Rop.Winforms.ListComboBox
Create compatible Items form ListBox and ComboBox |
|
Rop.Ldap
Aditional helpers for Ldap |
|
Rop.Winforms8.ListComboBox
Create compatible Items form ListBox and ComboBox |
|
Rop.Winforms7.ListComboBox
Helper classes for Winforms 7 |
GitHub repositories
This package is not used by any popular GitHub repositories.