dangl - Dangl.Common 1.7.2-beta0005

Common functionality

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

Copy to clipboard

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

Copy to clipboard

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

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

nuget Dangl.Common  ~> 1.7.2-beta0005
Copy to clipboard

> choco install Dangl.Common --version 1.7.2-beta0005 --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.2-beta0005" -Repository "dangl" -AllowPreRelease
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.2:

  • Dropped tests for netcoreapp3.1 and net5.0, added tests for net7.0

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

675 total downloads
12 downloads for version 1.7.2-beta0005
Download (56.69 KB)
Found on the current feed only

Package history

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