armat.utils 1.0.1

dotnet add package armat.utils --version 1.0.1                
NuGet\Install-Package armat.utils -Version 1.0.1                
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="armat.utils" Version="1.0.1" />                
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add armat.utils --version 1.0.1                
#r "nuget: armat.utils, 1.0.1"                
#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 armat.utils as a Cake Addin
#addin nuget:?package=armat.utils&version=1.0.1

// Install armat.utils as a Cake Tool
#tool nuget:?package=armat.utils&version=1.0.1                

Armat Utilities

The document describes Armat.Utils .Net library usage. It represents a set of reusable utilities for .Net applications. It contains of the following classes:

  • Counters
    • Armat.Utils.Counter class is a thread-safe counter. It also fires pre and post modification events when the counter value is changed.
    • Armat.Utils.LockCounter class is a thread-safe reentrant lock. It could be used to block certain operations while the program is running a job. It also fires events when the counter is locked or unlocked.
    • Armat.Utils.ControlledActionInvoker is derived from a LockCounter and allows blocking method invocations while the counter is locked. If configured accordingly, method invocation triggers upon unlocking the counter.
  • Collections
    • Armat.Collections.ConcurrentList is an implementation of list with thread safety in mind.
    • Armat.Collections.IndigentList is an implementation of list which mostly contains less then 2 elements. It avoids allocation of arrays wherever possible.
    • Armat.Collections.ListDictionary is an ordered dictionary implementing both - IDictionary and IList interfaces.
    • Armat.Collections.SegmentedStringDictionary is an implementation of a dictionary with multiple segments of keys. Interface ISegmentedStringDictionary defines the interface to access dictionary elements by segment keys.
    • Armat.Collections.IndexedList represents a list of elements which can be indexed by any field(s). It could be used as in-memory table of rows indexed by different columns. There are several indexing methods like hash-tables or binary trees.
  • Serialization
    • Armat.Serialization.IPackable declares interfaces for packing and unpacking data types that require custom serialization code.
    • Armat.Serialization.ITypeLocator declares interface for locating a data type based on it's assembly name and the type name to be used for deserialization.
    • Armat.Serialization.JsonSerializer helper class for easy serialization of objects into and from Json format.
    • Armat.Serialization.XmlSerializer helper class for easy serialization of objects into and from Xml format.
  • Extensions
    • Extension of Byte[] to compare, copy and perform bitwise operations on byte arrays. See Armat.Utils.Extensions.ByteArray class for details.
    • Extensions of IDictionary<Key,Value>, IReadOnlyDictionary<Key,Value>, IReadOnlyCollection<T> and IEnumerable<T> to compare contents of collections. See Armat.Utils.Extensions.ContentComparer class for details.
    • Extensions of Exception and AggregateException classes to retrieve inner exception(s) of a given type. See Armat.Utils.Extensions.ExceptionHelpers class for details.
    • Extension of ReaderWriterLockSlim to create a disposable ReadLocker, UpgradableReadLocker or WriteLocker objects - to acquire a lock in a given scope.

More utilities will come later...

Product 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. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
  • net6.0

    • No dependencies.

NuGet packages (1)

Showing the top 1 NuGet packages that depend on armat.utils:

Package Downloads
armat.threading

C# class library for developing multithreaded applications. It can be used as an alternative to .Net System.Threading.Tasks library to support multiple schedulers within a context of a single application.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
1.0.1 86 9/23/2024
1.0.0 197 4/6/2024