dangl - Dangl.Common 1.7.1

Common functionality

PM> Install-Package Dangl.Common -Version 1.7.1 -Source https://www.myget.org/F/dangl/api/v3/index.json

Copy to clipboard

> nuget.exe install Dangl.Common -Version 1.7.1 -Source https://www.myget.org/F/dangl/api/v3/index.json

Copy to clipboard

> dotnet add package Dangl.Common --version 1.7.1 --source https://www.myget.org/F/dangl/api/v3/index.json

Copy to clipboard
<PackageReference Include="Dangl.Common" Version="1.7.1" />
Copy to clipboard
source https://www.myget.org/F/dangl/api/v3/index.json

nuget Dangl.Common  ~> 1.7.1
Copy to clipboard

> choco install Dangl.Common --version 1.7.1 --source https://www.myget.org/F/dangl/api/v2

Copy to clipboard
Import-Module PowerShellGet
Register-PSRepository -Name "dangl" -SourceLocation "https://www.myget.org/F/dangl/api/v2"
Install-Module -Name "Dangl.Common" -RequiredVersion "1.7.1" -Repository "dangl" 
Copy to clipboard

Dangl.Common

Build Status
NuGet MyGet

This library contains common, shared functionality.

Link to documentation
Changelog

CI Builds

CI builds are available via MyGet

https://www.myget.org/F/dangl/api/v3/index.json

Compatibility

This project targets netstandard2.0, netstandard1.3 and net45. Due to .Net 4.5.2 being the currently latest supported version by Microsoft and the xUnit test suite, no tests are run for net45 and net451.

Classes

BindableBase

Base class for property binding with INotifyPropertyChanged.

ObjectExtensions

The ObjectExtensions.DeepClone() method may be used to create copies or clones of objects that are value but not reference equal.

StringEncryptionExtensions

Encryption and decryption methods using AES and PBKDF2.

StringExtensions

  • Sanitize() method to normalize line endings to current environments default and to also trim whitespaces at each line end
  • ToBase64() and FromBase64() methods
  • Compress() / Decompress methods using GZip and returning Base64 output
  • WithMaxLength(int maxLength) to limit the length of a string by dropping everything above a max length
  • WithoutLinebreaks to remove all linebreaks in a string
  • WithoutUnprintableCharacters to remove unprintable characters

StringHashExtensions

Extensions to produce MD5 and SHA256 values for strings.

DecimalExtensions

  • WithMaxAbsoluteValue(int maxValueAbsolute) to limit a decimal to a maximum value. This works for both negative and positive decimals, e.g. -3m.WithMaxAbsoluteValue(2) returns -2

TrulyObservableCollection

Collection that notifies of item changes (add, delete) as well as whenever a child item that implements INotifyPropertyChanged is changed.

ObservableDictionary<TKey, TValue>

This is internally using a Dictionary<TKey, TValue> and raises events when elements are changed.

Supported Frameworks

The library supports netstandard1.3, netstandard2.0 as well as net45 and net40. Binaries for the full framework are separately generated for older build tools that do not properly integrate with .NET Standard. The .NET 4.0 target is for compatibility reasons, it is not tested and requires .NET compilers for version 4.5 or newer to properly function. If supported by the tooling (Visual Studio 2017 or the dotnet CLI should be fine), it's advised to use the netstandard1.3 target. When using .NET Standard, all features should be available on Windows, Linux and Mac OS, but unit and integration tests are only performed for the following frameworks on Windows:

  • net6.0
  • net5.0
  • netcoreapp3.1
  • net461
  • net46
  • net47
  • net452

And on these frameworks in Linux:

  • net6.0

There are no known issues with other configurations, but neither is their functionality tested.

Assembly Strong Naming & Usage in Signed Applications

This module produces strong named assemblies when compiled. When consumers of this package require strongly named assemblies, for example when they themselves are signed, the outputs should work as-is. The key file to create the strong name is adjacent to the csproj file in the root of the source project. Please note that this does not increase security or provide tamper-proof binaries, as the key is available in the source code per Microsoft guidelines


MIT License

v1.7.1:

  • The ObjectExtensions.DeepClone() was optimized to be faster, especially for large object trees

v1.7.0:

  • Added ObjectExtensions.DeepClone() to allow easy cloning of objects
  • The build for netstandard1.3 has a new dependency on System.Reflection.TypeExtensions

v1.6.3:

  • Fixed a bug when decrypting and / or decompressing long strings with a pattern that resembles random strings, e.g. long Base64 strings. This only applies for .NET 6 runtimes
  • Added tests for net6.0

v1.6.2:

  • Fixed a bug where TrulyObservableCollection.Clear() kept event subscriptions to child elements alive, those are now properly unsubscribed
  • Added TrulyObservableCollection.AddRange() and TrulyObservableCollection.InsertRange()

v1.6.1:

  • Add net40 as target framework

v1.6.0:

  • Add ObservableDictionary<TKey, TValue> class

v1.5.1:

  • Drop tests for netcoreapp2.2 and add tests for netcoreapp3.1
  • Add StringExtensions.WithoutUnprintableCharacters()

v1.5.0:

  • The generated assemblies now have a strong name. This is a breaking change of the binary API and will require recompilation on all systems that consume this package. The strong name of the generated assembly allows compatibility with other, signed tools. Please note that this does not increase security or provide tamper-proof binaries, as the key is available in the source code per Microsoft guidelines

v1.4.7:

  • Tests are now also run in Linux
  • Drop tests for netcoreapp2.0, add tests for netcoreapp2.2

v1.4.6:

  • Add WithoutLinebreaks to StringExtensions

v1.4.5

  • Add StringHashExtensions with ToMd5() and ToSha256()

v1.4.4

  • Add WithMaxLength() to StringExtensions
  • Add WithMaxAbsoluteValue() on new DecimalExtensions

v1.4.3

  • Add netstandard2.0 target
  • Switch build system to NUKE

v1.4.2

  • Fix NullReferenceException when adding or removing null items to TrulyObservableCollection

v1.4.1

  • Downgrade to netstandard1.3 and net45 for broader compatibility

v1.4.0

  • PBKDF2 Iterations in the StringEncryptionExtensions are now configurable

v1.3.2

  • Target NETStandard 1.3
  • .NETFramework 4.0
  • .NETFramework 4.5
  • .NETStandard 1.3
    • NETStandard.Library (>= 1.6.1)
    • System.Reflection.TypeExtensions (>= 4.7.0)
  • .NETStandard 2.0
  • .NETFramework 4.0: 4.0.0.0
  • .NETFramework 4.5: 4.5.0.0
  • .NETStandard 1.3: 1.3.0.0
  • .NETStandard 2.0: 2.0.0.0

Owners

Georg Dangl

Authors

Georg Dangl

Project URL

https://github.com/GeorgDangl/Dangl.Common

License

MIT

Info

3 total downloads
0 downloads for version 1.7.1
Download (56.61 KB)
Found on the current feed only

Package history

Version Size Last updated Downloads Mirrored?
1.7.1 56.61 KB Thu, 16 Jun 2022 13:09:25 GMT 0
1.7.1-beta0006 56.64 KB Thu, 16 Jun 2022 13:07:35 GMT 0
1.7.1-beta0002 56.64 KB Thu, 16 Jun 2022 09:11:05 GMT 0
1.7.0 56.6 KB Wed, 04 May 2022 20:36:29 GMT 0
1.7.0-beta0004 56.66 KB Wed, 04 May 2022 20:24:22 GMT 0
1.6.3 49.63 KB Wed, 20 Apr 2022 10:37:52 GMT 0
1.6.3-beta0003 49.65 KB Wed, 20 Apr 2022 10:35:08 GMT 0
1.6.3-beta0001 49.66 KB Tue, 19 Apr 2022 22:38:16 GMT 0
1.6.2 49.3 KB Sat, 09 Apr 2022 09:20:03 GMT 0
1.6.2-beta0013 49.37 KB Fri, 08 Apr 2022 10:35:03 GMT 0
1.6.1 46.18 KB Sat, 26 Dec 2020 22:40:49 GMT 0
1.6.1-beta0001 46.23 KB Sat, 26 Dec 2020 20:31:08 GMT 0
1.6.0 35.09 KB Tue, 08 Dec 2020 10:54:46 GMT 0
1.6.0-beta0003 35.11 KB Mon, 07 Dec 2020 23:22:39 GMT 0
1.6.0-beta0002 34.98 KB Mon, 07 Dec 2020 23:17:47 GMT 0
1.6.0-beta0001 34.97 KB Mon, 07 Dec 2020 23:15:52 GMT 0
1.5.1 30.63 KB Fri, 27 Nov 2020 20:25:17 GMT 0
1.5.1-beta0006 30.65 KB Fri, 27 Nov 2020 20:23:24 GMT 0
1.5.1-beta0005 30.66 KB Fri, 27 Nov 2020 20:19:33 GMT 0
1.5.1-beta0004 30.28 KB Fri, 27 Nov 2020 20:10:02 GMT 0
1.5.0 30.17 KB Mon, 05 Aug 2019 17:20:20 GMT 1
1.5.0-beta0013 30.23 KB Mon, 05 Aug 2019 17:16:27 GMT 0
1.4.7-beta0010 29.01 KB Mon, 29 Jul 2019 19:14:08 GMT 0
1.4.7-beta0009 29.01 KB Mon, 29 Jul 2019 19:07:37 GMT 0
1.4.7-beta0008 29.01 KB Wed, 24 Jul 2019 10:49:18 GMT 0
1.4.7-beta0007 29.01 KB Wed, 24 Jul 2019 10:46:57 GMT 0
1.4.7-beta0002 28.93 KB Sat, 02 Mar 2019 11:50:33 GMT 0
1.4.6 28.93 KB Sat, 23 Feb 2019 20:35:21 GMT 0
1.4.6-beta0006 28.96 KB Sat, 23 Feb 2019 20:31:23 GMT 0
1.4.6-beta0005 28.96 KB Sat, 23 Feb 2019 20:28:19 GMT 0
1.4.6-beta0001 28.73 KB Thu, 03 Jan 2019 15:11:48 GMT 0
1.4.5 28.69 KB Tue, 23 Oct 2018 15:14:42 GMT 0
1.4.5-beta0003 28.72 KB Tue, 23 Oct 2018 15:11:39 GMT 0
1.4.4 27.88 KB Sat, 15 Sep 2018 13:57:37 GMT 0
1.4.4-beta0017 27.89 KB Sat, 15 Sep 2018 13:54:21 GMT 0
1.4.4-beta0016 27.9 KB Sat, 15 Sep 2018 13:46:27 GMT 0
1.4.4-beta0011 26.37 KB Sat, 15 Sep 2018 13:18:54 GMT 0
1.4.3 26.26 KB Mon, 19 Mar 2018 21:41:29 GMT 0
1.4.3-build-39 18 KB Thu, 01 Feb 2018 18:13:24 GMT 0
1.4.3-build-37 17.99 KB Thu, 11 Jan 2018 19:37:50 GMT 0
1.4.3-beta0011 26.28 KB Mon, 19 Mar 2018 21:28:55 GMT 0
1.4.3-beta0009 26.3 KB Mon, 19 Mar 2018 20:39:16 GMT 0
1.4.3-beta0007 26.29 KB Mon, 19 Mar 2018 20:02:38 GMT 0
1.4.2 17.93 KB Thu, 11 Jan 2018 19:36:34 GMT 2
1.4.2-build-35 17.99 KB Thu, 11 Jan 2018 19:35:01 GMT 0
1.4.2-build-34 17.9 KB Thu, 04 Jan 2018 20:09:41 GMT 0
1.4.2-build-33 17.9 KB Fri, 22 Dec 2017 13:40:30 GMT 0
1.4.2-build-32 17.89 KB Sun, 17 Dec 2017 11:33:41 GMT 0
1.4.2-build-31 17.9 KB Fri, 15 Dec 2017 16:04:30 GMT 0
1.4.1 17.83 KB Thu, 01 Feb 2018 18:07:05 GMT 0
1.4.1-build-29 17.89 KB Fri, 15 Dec 2017 16:01:01 GMT 0
1.4.1-build-28 17.86 KB Sun, 12 Nov 2017 20:58:11 GMT 0
1.4.1-build-27 17.86 KB Sun, 12 Nov 2017 20:55:32 GMT 0
1.4.1-build-26 17.86 KB Sun, 12 Nov 2017 20:20:24 GMT 0
1.4.1-build-25 17.86 KB Sun, 01 Oct 2017 20:55:53 GMT 0
1.4.1-build-24 17.86 KB Fri, 29 Sep 2017 16:15:25 GMT 0
1.4.1-build-23 17.86 KB Fri, 29 Sep 2017 16:11:14 GMT 0
1.4.1-build-22 17.86 KB Thu, 28 Sep 2017 19:10:58 GMT 0
1.4.1-build-21 17.86 KB Thu, 28 Sep 2017 17:41:53 GMT 0
1.4.1-build-20 17.86 KB Fri, 01 Sep 2017 17:59:20 GMT 0
1.4.1-build-19 17.86 KB Fri, 01 Sep 2017 17:33:18 GMT 0
0.3.2-beta0012 49.32 KB Fri, 08 Apr 2022 09:30:58 GMT 0
0.3.2-beta0009 46.23 KB Thu, 07 Apr 2022 21:13:10 GMT 0