Toolbox for .NET projects
BufferManager
: maintains a set of large arrays and gives clients segments of these that they can use as buffersOrderedDictionary<TKey, TValue>
: dictionary that also keeps track of item order by implementingIReadOnlyList<TValue>
Trees.TreeTraversals
: functions to walk any tree in pre/in/post and level order (implemented without using recursion)
Buffer<T>
: a data buffer that can refill automatically via an user provided functionEnumHelper
- Validates enums
- Allows access to their metadata quickly
PreciseDateTime
: returns the current date as a high precisionDateTimeOffset
StringExtensions
: extensions to remove diacritics and add more comparison optionsStrongRandom
: provides the same functionalities asSystem.Random
but usesSystem.Security.Cryptography.RandomNumberGenerator
IOHelper
- Copy and move operations with progress notification
- Copy will create a symbolic link if possible
- Provides a safe filesystem enumerator that ignores file access errors
Text.DelimitedTextRecordReader/Writer
: a fast and flexible delimited file reader and writerText.FixedWidthTextRecordReader/Writer
: a fast and flexible fixed width file reader and writer
BehaviorSubjectSlim<T>
: aSubjectSlim<T>
(see below) that keeps track of the current valueSubjectSlim<T>
: anISubject<T>
implementation that is still thread-safe but avoids locking internally and stores observers with aList<T>
with copy on write instead of anImmutableList<T>
DeferredSubject<T>
: anISubject<T>
wrapper that buffers new elements in aBlockingCollection<T>
ObservableExtensions
- Ignore elements while converting the current one
- Pairs the current element with the previous
StringValueConverter
: converts a string to any .NET primitive types, enums or GuidEncoding.FastASCIIEncoding
: a plain ASCII encoding (ignores code pages) that uses loop unrolling to be fasterParsing.EscapedStringParser
: parses backslash escaped strings
Tasks.SingleThreadTaskScheduler
: a task scheduler that runs tasks on a single dedicated thread
TransactionManager
: a transaction manager that supports ambient nested transaction contexts
To contribute to this project, please follow the standard .NET framework design guidelines and indent your code with tabs. Your code should compile with no warning in release mode.