PowBasics 0.1.5
There is a newer version of this package available.
See the version list below for details.
See the version list below for details.
dotnet add package PowBasics --version 0.1.5
NuGet\Install-Package PowBasics -Version 0.1.5
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="PowBasics" Version="0.1.5" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add PowBasics --version 0.1.5
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#r "nuget: PowBasics, 0.1.5"
#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 PowBasics as a Cake Addin #addin nuget:?package=PowBasics&version=0.1.5 // Install PowBasics as a Cake Tool #tool nuget:?package=PowBasics&version=0.1.5
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
PowBasics
IEquatable / GetHashCodeAggregate
sealed class ArrRec : IEquatable<ArrRec>
{
public string[] Arr { get; }
public ArrRec(string[] arr) => Arr = arr;
public bool Equals(ArrRec? other)
{
if (ReferenceEquals(null, other)) return false;
if (ReferenceEquals(this, other)) return true;
return Arr.Length == other.Arr.Length && Arr.Zip(other.Arr).All(t => t.Item1 == t.Item2);
}
public override bool Equals(object? obj) => ReferenceEquals(this, obj) || obj is ArrRec other && Equals(other);
public override int GetHashCode() => Arr.GetHashCodeAggregate();
public static bool operator ==(ArrRec? left, ArrRec? right) => Equals(left, right);
public static bool operator !=(ArrRec? left, ArrRec? right) => !Equals(left, right);
}
Json
Create a converter
static class Converters
{
public static readonly JsonConverter<Color> ColorConverter = JsonConverterMaker.Make<Color, ColorSer>(
e => new(e.A, e.R, e.G, e.B),
e => Color.FromArgb(e.A, e.R, e.G, e.B)
);
private sealed record ColorSer(byte A, byte R, byte G, byte B);
}
Create a converter factory to convert a generic type
class OptionConverterFactory : JsonConverterFactory
{
public override bool CanConvert(Type typeToConvert) =>
typeToConvert.IsGenericType &&
typeToConvert.GetGenericTypeDefinition() == typeof(Option<>);
public override JsonConverter CreateConverter(Type typeToConvert, JsonSerializerOptions options)
{
var wrappedType = typeToConvert.GetGenericArguments()[0];
var converter = (JsonConverter)Activator.CreateInstance(typeof(OptionConverter<>).MakeGenericType(wrappedType))!;
return converter;
}
private sealed class OptionConverter<T> : JsonConverter<Option<T>>
{
private sealed record Ser(bool HasValue, T V);
private static Ser ToSer(Option<T> opt) => new(opt.IsSome, opt.IfNoneUnsafe(default(T))!);
private static Option<T> FromSer(Ser ser) => ser.HasValue ? ser.V : None;
public override Option<T> Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
{
using var doc = JsonDocument.ParseValue(ref reader);
return FromSer(doc.Deserialize<Ser>(options)!);
}
public override void Write(Utf8JsonWriter writer, Option<T> value, JsonSerializerOptions options) =>
JsonSerializer.Serialize(writer, ToSer(value), options);
}
}
Product | Versions 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.
-
net8.0
- No dependencies.
NuGet packages (6)
Showing the top 5 NuGet packages that depend on PowBasics:
Package | Downloads |
---|---|
PowWinForms
WinForms reactive utilities |
|
LINQPadExtras
LINQPad utility functions |
|
PowTrees
Tree structure with algorithms |
|
PowLINQPad
Reactive control and utilities for LINQPad |
|
ReactiveVars
Collection of general utility functions |
GitHub repositories
This package is not used by any popular GitHub repositories.
Version | Downloads | Last updated |
---|---|---|
0.2.1 | 170 | 6/30/2024 |
0.2.0 | 125 | 6/30/2024 |
0.1.6 | 156 | 2/12/2024 |
0.1.5 | 135 | 1/31/2024 |
0.1.4 | 104 | 1/31/2024 |
0.1.3 | 110 | 1/31/2024 |
0.1.1 | 118 | 1/19/2024 |
0.1.0 | 120 | 1/19/2024 |
0.0.40 | 174 | 9/16/2023 |
0.0.39 | 158 | 9/16/2023 |
0.0.38 | 129 | 9/16/2023 |
0.0.37 | 180 | 9/16/2023 |
0.0.36 | 146 | 9/16/2023 |
0.0.35 | 169 | 9/15/2023 |
0.0.34 | 185 | 8/23/2023 |
0.0.33 | 175 | 8/22/2023 |
0.0.32 | 295 | 8/5/2023 |
0.0.31 | 158 | 7/30/2023 |
0.0.30 | 220 | 7/12/2023 |
0.0.29 | 183 | 7/12/2023 |
0.0.28 | 170 | 7/11/2023 |
0.0.27 | 191 | 7/10/2023 |
0.0.26 | 164 | 7/10/2023 |
0.0.25 | 151 | 7/10/2023 |
0.0.24 | 177 | 7/9/2023 |
0.0.23 | 182 | 7/5/2023 |
0.0.22 | 174 | 7/5/2023 |
0.0.21 | 185 | 7/5/2023 |
0.0.20 | 168 | 7/5/2023 |
0.0.19 | 142 | 7/5/2023 |
0.0.18 | 190 | 7/4/2023 |
0.0.17 | 167 | 7/2/2023 |
0.0.16 | 164 | 6/21/2023 |
0.0.15 | 165 | 6/15/2023 |
0.0.14 | 166 | 6/15/2023 |
0.0.13 | 149 | 6/15/2023 |
0.0.12 | 163 | 6/12/2023 |
0.0.11 | 181 | 6/5/2023 |
0.0.10 | 208 | 5/28/2023 |
0.0.9 | 204 | 5/28/2023 |
0.0.6 | 374 | 11/26/2022 |
0.0.5 | 340 | 11/26/2022 |
0.0.4 | 506 | 11/15/2022 |