Titanium.Basics.Core
1.0.0
dotnet add package Titanium.Basics.Core --version 1.0.0
NuGet\Install-Package Titanium.Basics.Core -Version 1.0.0
<PackageReference Include="Titanium.Basics.Core" Version="1.0.0" />
paket add Titanium.Basics.Core --version 1.0.0
#r "nuget: Titanium.Basics.Core, 1.0.0"
// Install Titanium.Basics.Core as a Cake Addin #addin nuget:?package=Titanium.Basics.Core&version=1.0.0 // Install Titanium.Basics.Core as a Cake Tool #tool nuget:?package=Titanium.Basics.Core&version=1.0.0
Legend: <details> <summary><a name="example">whatTypeExtending.FunctionName(mandatory, [type]parameters, optional_parametrs_count) → return_type_if_not_obvious <br> ↳ whatTypeExtending.ChildMethod(mandatory, optional_count) → returns</a></summary> Description. Types (symbol replacing "[type]" in example): " - string, @ - char, [] - IEnumerable or its child type, # - int, $ - float or simmilar, ? - bool, % - float or simmilar with value betwen 0 and 1, - - enum, > - Generic type, ^ - function
Parameters:
type name, type name = default_value_if_optional
Description
Child methods:
Child methods are either the same method but with different parameters or similar method with a bit altered behavior. Most of the time, they call the main method.
whatTypeExtending.FunctionName(type name, type name = default_value_if_optional)
</details>
<br> <br>
Highlights
String.Slice(Start, End, SliceReturnSourceIfNotFound, DefaultValueIfNotFound, LastStart, LastEnd, IncludeStart, IncludeEnd, throwException) → string <br> A very handy and flexible method for slicing strings. It can slice by index, string, regex, or char conditions. Return is very customizable too.
TypesFuncs
Class for type conversions and other type related functions.
Parsing (region)
Here are the functions for parsing types to other types.
IsType
Checks if types are satisfy some conditions
<details> <summary><a name="charisdigit">char.IsDigit()</a></summary> Checks if the char is a digit </details>
<details> <summary><a name="charisdoublet">char.IsDoubleT()</a></summary> Checks if the char is one of allowed symbols for double type </details>
ToType
Int
<details> <summary><a name="chartointt">char.ToIntT()</a></summary> Converts char to int </details> <details> <summary><a name="stringtointt">string.ToIntT(3)</a></summary> Parameters:
bool CanBeNegative = true, bool StopIfNumberEnded = false, int? ExceptionValue = null
Removes all non-digit symbols from the string and converts it to int. If the string doesn't contain any digit, returns ExceptionValue or throws an exception. </details>
<details> <summary><a name="stringtolongt">string.ToLongT(3)</a></summary> Parameters:
bool CanBeNegative = true, bool StopIfNumberEnded = false, long? ExceptionValue = null
Removes all non-digit symbols from the string and converts it to long. If the string doesn't contain any digit, returns ExceptionValue or throws an exception. </details>
<details> <summary><a name="stringtonintt">string.ToNIntT(2)</a></summary> Parameters:
bool CanBeNegative = true, bool StopIfNumberEnded = false
Returns int? if the string contains a number, otherwise returns null </details>
<details> <summary><a name="stringfindint">string.FindInt(1)</a></summary> Parameters:
char thousandSeparator = ' '
Searches for INT in string. Throws IndexOutOfRangeException if no any int found in this string. </details>
<details> <summary><a name="stringfindintbetween">string.FindIntBetween(LeftStr", (RightStr"))</a></summary> Parameters:
string LeftStr, string RightStr = null
Searches for INT between two strings </details>
String
<details> <summary><a name="stringtoindex">string.ToIndex((Lower?))</a></summary> Parameters:
bool Lower = true
Int to subscript numbers string </details>
<details> <summary><a name="stringtovisiblestring">string.ToVisibleString()</a></summary> Removes all controls characters </details>
<details> <summary><a name="doubletostringt">double.ToStringT(Accuracy#)</a></summary> Parameters:
int Accuracy = 3
Converts a double to a string, trimming the fractional part until zeros start </details>
<details> <summary><a name="ienumerabletostringt">IEnumerable.ToStringT(Separator")</a></summary> Parameters:
string Separator = ""
Converts IEnumerable to string, separating elements by Separator </details>
<details> <summary><a name="idictionarytostringt">IDictionary.ToStringT(5)</a></summary> Parameters:
bool Vertical = true, string ItemSeparator = default, string PairSeparator = "\n", string BeforePair = null, string AfterPair = null
Converts IDictionary to string </details>
<details> <summary><a name="bytestohex">byte[].ToHex()</a></summary> Converts byte array to hex string </details>
Double
<details> <summary><a name="stringtodoublet">string.ToDoubleT(6)</a></summary> Parameters:
bool CanBeNegative = true, bool StopIfNumberEnded = false, bool CanBeShortcuted = true, bool DotShouldBeAttachedToNumber = true, char Separator = '.', double? ExceptionValue = Double.NaN
Removes all non-digit symbols from the string and converts it to double. If the string doesn't contain any digit, returns ExceptionValue or throws an exception. </details>
<details> <summary><a name="stringtondoublet">string.ToNDoubleT(5)</a></summary> Parameters:
char Separator = '.', bool CanBeNegative = true, bool CanBeShortcuted = true, bool DotShouldBeAttachedToNumber = true, bool StopIfNumberEnded = false
Returns double? if the string contains a number, otherwise returns null </details>
Float
<details> <summary><a name="stringfindfloat">string.FindFloat(2)</a></summary> Parameters:
char DecimalSeparator = '.', char thousandSeparator = ' '
Converts string to float </details>
Short
<details> <summary><a name="stringreadshortuntilletter">string.ReadShortUntilLetter()</a></summary>
Reads String and parses to Short until meets a letter </details>
Bool
<details> <summary><a name="stringtobool">string.ToBool()</a></summary> Converts string to bool. Supports multiple languages. Optimized version </details>
<details> <summary><a name="stringyesbool">string.YesToBool()</a></summary> Converts string to bool. Supports multiple languages. Less optimized, but more reliable version </details>
<details> <summary><a name="booltorustring">bool.ToRuString()</a></summary> Converts bool to </details>
<details>
<summary><a name="randbool">RandBool(TrueProbability#)</a></summary> Parameters:
Int32 TrueProbability = = Int32.MaxValue/2
Returns random bool with given probability (the range is 0 to Int32.MaxValue) </details>
Array
<details> <summary><a name="stringtodoublet">string.ToDoubleT((Separator@))</a></summary> Parameters:
char Separator = '.'
Converts string[,] to double[,] </details>
<details> <summary><a name="doubletostringt">double.ToStringT((Format"))</a></summary> Parameters:
string Format
Converts double[,] to string[,] </details>
<details> <summary><a name="doubletostringmatrix">double.ToStringMatrix()</a></summary> Converts double[,] to string[,] </details>
<details> <summary><a name="tosinglearray">ToSingleArray()</a></summary> Parameters:
T[][,] list
Converts T[][,] to T[,,] </details>
OtherTypeFuncs
Int
<details> <summary><a name="intisodd">IsOdd()</a></summary> returns true if the number is odd </details>
<details> <summary><a name="intiseven">IsEven()</a></summary> returns true if the number is even </details>
<details> <summary><a name="intdivrem">DivRem(divident#, divisor#, out reminder#)</a></summary> Returns the result of the division and the reminder into the out parameter
int Divident, int Divisor, out int Reminder
</details>
<details>
<summary><a name="intfit">Fit((min#, max#))</a></summary> Parameters:
int Min = = int.MinValue, int Max = = int.MaxValue
Fits the number into the range </details>
<details> <summary><a name="intfitpositive">FitPositive((max#))</a></summary> Parameters:
int Max = int.MaxValue
Fits the number into the range [0, Max] </details>
<details> <summary><a name="intfitnegative">FitNegative((min#))</a></summary> Parameters:
int Min = int.MinValue
Fits the number into the range [Min, 0] </details>
String
SplitN
<details> <summary><a name="splitn">string.SplitN(Separator") <br> ↳ string.SplitN(Separator", StringSplitOptions-) <br> ↳ string.SplitN(Separator", count#) <br> ↳ string.SplitN(Separator", count#, StringSplitOptions-) <br> ↳ string.SplitN(Separator[]) <br> ↳ string.SplitN(Separator[], StringSplitOptions-) <br> ↳ string.SplitN(Separator[], count#) <br> ↳ string.SplitN(Separator[], count#, StringSplitOptions-) <br> ↳ string.SplitN(Separator@) <br> ↳ string.SplitN(Separator@, count#) <br> ↳ string.SplitN(Separator@, StringSplitOptions-)</a></summary> String.Split() but returns null if no any split found
Parameters:
string Separator, StringSplitOptions StringSplitOptions = StringSplitOptions.None, int count = int.MaxValue
String.Split() but returns null if no any split found
Child methods:
string.SplitN(string Separator, StringSplitOptions StringSplitOptions)
string.SplitN(string Separator, int count)
string.SplitN(string Separator, int count, StringSplitOptions StringSplitOptions)
string.SplitN(string[] Separator)
string.SplitN(string[] Separator, StringSplitOptions StringSplitOptions)
string.SplitN(string[] Separator, int count)
string.SplitN(string[] Separator, int count, StringSplitOptions StringSplitOptions)
string.SplitN(char Separator)
string.SplitN(char Separator, int count)
string.SplitN(char Separator, StringSplitOptions StringSplitOptions)
</details>
<details> <summary><a name="stringcontainsany">string.ContainsAny(sequence[]) <br> ↳ string.ContainsAny(params sequence[])</a></summary> Parameters:
IEnumerable<string> sequence
Returns true if the string contains any of the sequence elements
Child methods:
string.ContainsAny(params string[] sequence)
</details>
<details> <summary><a name="stringcontainsall">string.ContainsAll(sequence[]) <br> ↳ string.ContainsAll(params sequence)</a></summary> Parameters:
IEnumerable<string> sequence
Returns true if the string contains all of the sequence elements
Child methods:
string.ContainsAll(params string[] sequence)
</details>
<details> <summary><a name="stringcountsymbols">string.SymbolsCount()</a></summary> Returns the count of symbols in the string, excluding control characters </details>
<details> <summary><a name="doubleformattostring">double.FormatToString(FixedLength#, Align-, 1)</a></summary> Makes s.Length be equal to FixedLength by adding filler symbols if it's too short or cutting it if it's too long
Parameters:
int FixedLength, char FillerSymbol = ' ', Positon Align, char Filler = ' '
</details>
<details> <summary><a name="stringformattostring">string.FormatToString(FixedLength#, Align-, 2)</a></summary> Makes s.Length be equal to FixedLength by adding filler symbols if it's too short or cutting it if it's too long
Parameters:
int FixedLength, char FillerSymbol = ' ', Positon Align, char Filler = ' ', int Offset = 0
</details>
<details> <summary><a name="stringinsert">string.Insert(Value", Start#, (End#))</a></summary> Inserts value between Start and End
Parameters:
string Value, int Start, int? End
</details>
<details> <summary><a name="stringslice">🌟 string.Slice(Start>, End>, 7) <br> ↳ string.Slice(Start, 7) <br> ↳ string.SliceFromEnd(Start, 7) </a></summary>A very powerful and flexible method for slicing strings. It can slice by index, string, regex or function.
Parameters:
Generic<int, string, Regex, Func<char,bool>> Start, //: Start of the result string:
// int: Start index of the result string (inverse direction if negative)
// string: The string inside <paramref name="s"/> that will be the start position of the result
// Regex: The string inside <paramref name="s"/> matches Regex that will be the start position of the result
// Func<char,bool>: Conditions that the start characters of the string must satisfy (by function per character)
Generic<int, string, Regex, Func<char,bool>> End, //: End of the result string:
// int: End index of the result string (inverse direction if negative). Shrinks to s.Length if it's more than it. Swaps with Start if they're mixed up (only if both are int)
// string: The string inside s that will be the end position of the result
// Regex: The string inside s matches Regex that will be the end position of the result
// Func<char,bool>: Conditions that the end characters of the string must satisfy (by function per character)
SliceReturn SliceReturnSourceIfNotFound = SliceReturn.Never, //: if Always, return s if Start or End not found
SliceReturn DefaultValueIfNotFound = SliceReturn.Never, //: if Always, return s if Start or End not found
bool LastStart = false, //: if true, the last occurance of the Start will be searched (doesn't do anything if Start is int)
bool LastEnd = true, //: if true, the last occurance of the End will be searched (doesn't do anything if End is int)
bool IncludeStart = false, //: Include Start symbols (doesn't do anything if Start is int)
bool IncludeEnd = false, //: Include End symbols (doesn't do anything if End is int)
bool throwException = false //: If false, returns null on expected errors: if source is null or empty; If start or end not found
Examples:
"Hello World!".Slice(0, 5) //: "Hello"
"Hello World!".Slice(-6) //: "World!"
"Hello World!".Slice("Hel", "!") //: "lo World"
"Hello World!".Slice("ll", "rld", IncludeStart: true, IncludeEnd: true) //: "llo World"
"Hello World!".Slice("nothing found") //: null
"Hello World!".Slice("nothing found", SliceReturnSourceIfNotFound: SliceReturn.Always) //: "Hello World!"
</details>
<details> <summary><a name="stringindexoft">string.IndexOfT(s2", 4) <br> ↳ string.IndexOfT(Conditions, 4) </a></summary> Return an index of (IndexOfEnd? end : start) of s2 in s
Parameters:
string s2, int Start = 0, int End = Int32.MaxValue, bool InvertDirection = false, bool IndexOfEnd = false
Child methods:
string.IndexOfT(Func<char,bool>[] Conditions, int Start = 0, int End = Int32.MaxValue, bool InvertDirection = false, bool IndexOfEnd = false)
</details>
<details>
<summary><a name="stringmultiply">string.Multiply(count#)
<br> ↳ char.Multiply(count#) </a></summary>
Has you ever been trolled by pythonists with their "string"*3="stringstringstring"? Now you can do it in C#! 🤣
<br>
Adds the string/char to itself count
times.
</details>
<details> <summary><a name="stringreplace">string.Replace(Start", End", 2) <br> ↳ string.Replace(ReplaceRule dictionary) <br> ↳ string.Replace(OldStrings[], NewStrings[]) <br> ↳ string.ReplaceFromLast(OldString", NewString") </a></summary>
Parameters:
int Start, int? End = null, string NewString = null, bool Exception = true
Child methods:
string.Replace(Dictionary<string, string> ReplaceRule) //: Replaces all dictionary keys occurancies with their values
string.Replace(OldStrings[], NewStrings[]) //: Replaces all OldStrings occurancies with their NewStrings
string.ReplaceFromLast(string OldString, string NewString) //: Replaces the last occurance of OldString with NewString
</details>
<details>
<summary><a name="stringescape">string.Escape(Characters", EscapeSymbol")</a></summary>
Escapes string -- adds EscapeSymbol
before each character from Characters
Parameters:
string Characters, string EscapeSymbol = "\\"
</details>
<details> <summary><a name="stringarradd">string.Add(addiction", (ToEnd?)) <br> ↳ string.AddToStart(addiction") <br> ↳ string.AddToEnd(addiction")</a></summary>
</a></summary>
Adds the addiction
to the string. If ToEnd
is true, adds it to the end, else -- to the start
Parameters:
string addiction, bool ToEnd = true
Child methods:
string.AddToStart(string addiction)
string.AddToEnd(string addiction)
</details>
<details> <summary><a name="enumerableremove">string.Remove(RemovableString", (FromLeft?, ComparisonType-)) <br> ↳ string.RemoveFrom(FromWhere-, params RemovableStrings") <br> ↳ string.RemoveFrom(FromWhere-, RemovableString") <br> ↳ string.RemoveAll(RemovableString", (ComparisonType-)) <br> ↳ string.RemoveAll(RemovableStrings[]", (ComparisonType-)) <br> ↳ string.RemoveAllFrom(RemovableChars", (FromWhere-, ComparisonType-))</a></summary> </a></summary> Removes the RemovableString from the string
Parameters:
string RemovableString, bool FromLeft = true, StringComparison ComparisonType = StringComparison.Ordinal
Child methods:
string.RemoveFrom(Side FromWhere, params string RemovableStrings)
string.RemoveFrom(Side FromWhere, string RemovableString)
string.RemoveAll(string RemovableString, StringComparison ComparisonType)
string.RemoveAll(string[] RemovableStrings, StringComparison ComparisonType)
string.RemoveAllFrom(string RemovableChars, Side FromWhere, StringComparison ComparisonType)
</details>
Enumerable
<details> <summary><a name="enumerablecontainsany">IEnumerable.ContainsAny(sequence[]) <br> ↳ IEnumerable.ContainsAny(params sequence[])</a></summary> Returns true if the string contains any of the sequence elements
Parameters:
IEnumerable<string> sequence
Child methods:
IEnumerable.ContainsAny(params string[] sequence)
</details>
<details> <summary><a name="enumerablecontainsall">IEnumerable.ContainsAll(sequence[]) <br> ↳ IEnumerable.ContainsAll(params sequence)</a></summary> Returns true if the string contains all of the sequence elements
Parameters:
IEnumerable<string> sequence
Child methods:
IEnumerable.ContainsAll(params string[] sequence)
</details>
<details> <summary><a name="enumerableempty">IEnumerable.Empty()</a></summary> Returns true if the IEnumerable is empty </details>
<details> <summary><a name="enumerabletoarray">IEnumerable.ToArray(Convert) <br> ↳ IEnumerable.ToArray()</a></summary> Converts IEnumerable to array
Parameters:
Func<Src, Tgt> Convert
Child methods:
IEnumerable.ToArray()
</details>
<details> <summary><a name="enumerablerandomshuffle">IEnumerable.RandomShuffle() <br> ↳ IEnumerable.RandomShuffle(Random)</a></summary> Returns a shuffled list
Parameters:
Random random
</details>
<details> <summary><a name="enumerablerandomlist">List<int>.RandomList(start#, count#)</a></summary> Returns a list of random numbers
Parameters:
int start, int count
</details>
<details> <summary><a name="enumerablepop">List.Pop()</a></summary> Removes the last element from the list and returns it </details>
<details> <summary><a name="enumerableswap">List.Swap(aIndex#, bIndex#) <br> ↳ T[].Swap(aIndex#, bIndex#)</a></summary> </a></summary> Swaps two elements in the list
Parameters:
int aIndex, int bIndex
Child methods:
T[].Swap(aIndex, bIndex)
</details>
<details> <summary><a name="enumerableindexof">List.IndexOf(value>)</a></summary> Returns the index of the value in the list
Parameters:
T value
</details>
<details> <summary><a name="enumerablesplit">[][].Split(arraysCount#)</a></summary> Splits the list into arraysCount arrays
Parameters:
int arraysCount
</details>
<details> <summary><a name="enumerablegetmaxindex">double[].GetMaxIndex()</a></summary> Returns the index of the max value in the list </details>
<details> <summary><a name="enumerableconcat">Concat(Array1[], Array2[])</a></summary> Concatenates two arrays
Parameters:
T[] Array1, T[] Array2
</details>
<details> <summary><a name="enumerablereducedimension">[][].ReduceDimension()</a></summary> Converts matrix to array </details>
<details> <summary><a name="enumerabletostringline">IEnumerable.ToStringLine(Separator", LastSeparator") <br> ↳ IEnumerable.ToStringLine(Separator")</a></summary> </a></summary> Converts IEnumerable to string, separating elements by Separator and LastSeparator
Parameters:
string Separator, string LastSeparator
Child methods:
IEnumerable.ToStringLine(string Separator)
</details>
<details> <summary><a name="enumerablefillandget">[].FillAndGet(value)</a></summary> Fills the array with the value and returns it
Parameters:
T[] source, T value
</details>
<details> <summary><a name="enumerableaddrangeandget">[].AddRangeAndGet(summand[])</a></summary> Adds summand to the array and returns it
Parameters:
T[] array, T[] summand
</details>
</br>
Size
<details> <summary><a name="sizemax">Size.Max()</a></summary> Returns the highest dimension </details>
<details> <summary><a name="sizemin">Size.Min()</a></summary> Returns the lowest dimension </details>
<details> <summary><a name="sizeresize">Size.Resize(NewDimensionValue#, FixedDimension-)</a></summary> Returns the new Size with the same aspect ratio
Parameters:
int NewDimensionValue, Dimension FixedDimension
</details>
</br>
Regex
<details> <summary><a name="regexismatcht">Regex.IsMatchT(source", (start#)) <br> ↳ Regex.IsMatchAny(s, (start#)) <br> ↳ Regex.IsMatchAll(s, (start#)) </a></summary> Is any of Regex matches the string
Parameters:
string s, int start = 0
Child methods:
IEnumerable<Regex>.IsMatchAny(s, int start = 0)
IEnumerable<Regex>.IsMatchAll(s, int start = 0)
</details>
<details> <summary><a name="regexreverse">Regex.Reverse() <br> ↳ List<Regex>.ReverseRegexes()</a></summary> Swithes between "includes" and "excludes" modes
Child methods:
List<Regex>.ReverseRegexes()
</details>
<details> <summary><a name="regexinvert">InvertRegex(string)</a></summary> Swaps "equal" mode to "contains" mode (Adds $/^ in the start/end if they're not; Removes them if they are)
Parameters:
string S
</details>
<br>
Color
<details> <summary><a name="colorchange">Color.Change((A#, R#, G#, B#))</a></summary> Changes the color
Parameters:
byte? A = null, byte? R = null, byte? G = null, byte? B = null
</details>
<br>
Generic
<details> <summary><a name="swap">.Swap(ref a, ref b)</a></summary> Swaps two variables
Parameters:
T a, T b
</details>
<details> <summary><a name="isdefault">.IsDefault()</a></summary> Checks if the value is default
Parameters:
T value
</details>
<details> <summary><a name="todefaultifnot">.ToDefault_IfNot(predicate^)</a></summary> Returns default if the value doesn't satisfy the predicate
Parameters:
Func<T, bool> predicate
</details>
Process
<details> <summary><a name="killall">KillProcesses((Path", Name"))</a></summary> Kills all processes with the same name or path
Parameters:
string Path, string Name
</details>
</br> </br>
IO
Class for input-output actions, like file writting. Functions:
<details> <summary><a name="copyall">CopyAll (SourcePath", TargetPath", (3)) <br> ↳ DirectoryInfo.CopyAllTo(SourcePath", TargetPath", (3))</a></summary> Copies all files, directories, subdirectories and it's content to the new folder
Parameters:
string SourcePath, string TargetPath, bool KillRelatedProcesses = false, List<Regex>? ExceptList = null, bool DisableSyntaxCheck = false
Child methods:
DirectoryInfo.CopyAllTo(string TargetPath, bool KillRelatedProcesses = false, List<Regex> ExceptList = null, bool DisableSyntaxCheck = false)
</details>
<details> <summary><a name="removeall">RemoveAll(Folder path", 2)</a></summary> Removes all files and directories in the folder Parameters:
string FolderPath, bool RemoveSelf = true, List<Regex>? ExceptList = null
</details>
<details> <summary><a name="renameall">RenameAll(Folder path", 2)</a></summary>
Renames all files in the Directory (not recursive) <br> Parameters:
string FolderPath, Func<string, string> Rename, List<Regex>? ExceptList = null
</details>
<details> <summary><a name="moveall">MoveAllTo(SourcePath", TargetPath", (4)) <br> ↳ DirectoryInfo.MoveAllTo(Target path", 4)</a></summary> Moves all files, directories, subdirectories and it's content to the new folder Parameters:
string TargetPath, bool DeleteSourceDir = true, bool KillRelatedProcesses = false, List<Regex> ExceptList = null, bool DisableSyntaxCheck = false
Child methods:
MoveAllTo(string SourcePath, string TargetPath, bool DeleteSourceDir = true, bool KillRelatedProcesses = false, List<Regex> ExceptList = null, bool DisableSyntaxCheck = false)
</details>
<br> <br>
ClasicFuncs
Makes extention methods or addictions to the basic classes. Functions:
bool string.IsNullOrEmpty()
bool string.IsNullOrWhiteSpace()
string string.IsInterned()
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net6.0 is compatible. 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. |
-
net6.0
- No dependencies.
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
Version | Downloads | Last updated |
---|---|---|
1.0.0 | 132 | 3/22/2024 |