Skip to content

HarinezumiSama/Omnifactotum

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

542 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Omnifactotum

Omnifactotum is the ultimate solution for .NET developers who want to streamline their development process. It provides its own helper and functional classes and interfaces as well as the extension methods for the standard .NET types. Omnifactotum is compatible with the older and newer .NET versions. It's the perfect way to reduce errors and save time, allowing developers to focus on creating quality code.

Factotum is a Latin word literally meaning "do everything", that is, a handyman or Jack-of-all-trades.

Build Status

Branch Status
master Build status (master)
develop Build status (develop)

Statistics

  • NuGet package

  • GitHub

    • GitHub Release GitHub commits since latest release (by SemVer) GitHub Downloads (all assets, all releases)
    • GitHub GitHub code size in bytes GitHub language count GitHub top language GitHub repo size
    • GitHub open issues GitHub open pull requests

The non-exhaustive list of the .NET classes covered

The non-exhaustive list of own helper classes

  • EnumFactotum
  • Factotum

The non-exhaustive list of own functional classes

  • ByReferenceEqualityComparer<T>
  • CaseInsensitiveStringKey (deprecated in favor of CaseInsensitiveString)
  • CaseInsensitiveString
  • ColoredConsoleTraceListener
  • DirectedGraph<T> and DirectedGraphNode<T>
  • EnumFixedSizeDictionary<TKey, TValue>
  • FixedSizeDictionary<TKey, TValue>
  • KeyedComparer<T, TKey>
  • KeyedEqualityComparer<T, TKey>
  • LocalComputerCurrentDateTimeProvider (implements ICurrentDateTimeProvider)
  • ObjectValidator
  • ReadOnlyItemCollection<T> (the read-only wrapper for ICollection<T>)
  • ReadOnlySet<T>
  • SemaphoreSlimBasedLock
  • StopwatchElapsedTimeProvider (implements IElapsedTimeProvider)
  • SyncValueContainer<T> (implements IValueContainer<T>)
  • TemplatedStringResolver (provides functionality similar to C# interpolated strings)
  • ValueContainer<T> (implements IValueContainer<T>)
  • ValueRange<T>
  • VirtualTreeNode<T> and VirtualTreeNodeRoot<T>
  • WeakReferenceBasedCache<TKey, TValue>

The non-exhaustive list of own abstractions (interfaces)

  • ICurrentDateTimeProvider
  • IElapsedTimeProvider
  • IValueContainer<T>

The non-exhaustive list of own delegates

  • Task EventHandlerAsync<>(...)
  • OutFunc<TOutput, out TResult>
  • OutFunc<in T, TOutput, out TResult>
  • OutFunc<in T1, in T2, TOutput, out TResult>
  • OutFunc<in T1, in T2, in T3, TOutput, out TResult>

Dealing with Compatibility Issues

Due to certain inconsistencies between .NET Standard 2.0, .NET Framework 4.*, and .NET Core 2.x, you may need to apply one or more workarounds as described below when using Omnifactotum with your projects compiled for .NET Standard 2.0 or .NET Core 2.x -or- a mix of .NET Standard 2.0 and/or .NET Core 2.x and/or .NET Framework 4.x:

Omnifactotum's Class or Method Workaround
System.Collections.Generic.KeyValuePair Use Omnifactotum.OmnifactotumKeyValuePair.
OmnifactotumCollectionExtensions.ToHashSet(...) Use static method invocation instead of extension method invocation. That is: OmnifactotumCollectionExtensions.ToHashSet(collection) instead of collection.ToHashSet().
OmnifactotumDictionaryExtensions.GetValueOrDefault Use static method invocation instead of extension method invocation. That is: OmnifactotumDictionaryExtensions.GetValueOrDefault(dictionary) instead of dictionary.GetValueOrDefault().

About

Omnifactotum is the ultimate solution for .NET developers who want to streamline their development process. It provides its own helper and functional classes and interfaces as well as the extension methods for the standard .NET types. It's the perfect way to reduce errors and save time, allowing developers to focus on creating quality code.

Topics

Resources

License

Stars

Watchers

Forks

Contributors