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
> nuget.exe install Dangl.Common -Version 1.7.2-beta0005 -Source https://www.myget.org/F/dangl/api/v3/index.json
> dotnet add package Dangl.Common --version 1.7.2-beta0005 --source https://www.myget.org/F/dangl/api/v3/index.json
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
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
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 endToBase64()
andFromBase64()
methodsCompress()
/Decompress
methods using GZip and returning Base64 outputWithMaxLength(int maxLength)
to limit the length of a string by dropping everything above a max lengthWithoutLinebreaks
to remove all linebreaks in a stringWithoutUnprintableCharacters
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
v1.7.2:
- Dropped tests for
netcoreapp3.1
andnet5.0
, added tests fornet7.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()
andTrulyObservableCollection.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 fornetcoreapp3.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 fornetcoreapp2.2
v1.4.6:
- Add
WithoutLinebreaks
toStringExtensions
v1.4.5
- Add
StringHashExtensions
withToMd5()
andToSha256()
v1.4.4
- Add
WithMaxLength()
toStringExtensions
- Add
WithMaxAbsoluteValue()
on newDecimalExtensions
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
OwnersGeorg Dangl |
AuthorsGeorg Dangl |
Project URLhttps://github.com/GeorgDangl/Dangl.Common |
LicenseMIT |
Info403 total downloads |
8 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 | 8 |
|
||
![]() |
1.7.1 | 56.61 KB | Thu, 16 Jun 2022 13:09:25 GMT | 7 |
|
||
![]() |
1.7.1-beta0006 | 56.64 KB | Thu, 16 Jun 2022 13:07:35 GMT | 7 |
|
||
![]() |
1.7.1-beta0002 | 56.64 KB | Thu, 16 Jun 2022 09:11:05 GMT | 6 |
|
||
![]() |
1.7.0 | 56.6 KB | Wed, 04 May 2022 20:36:29 GMT | 7 |
|
||
![]() |
1.7.0-beta0004 | 56.66 KB | Wed, 04 May 2022 20:24:22 GMT | 6 |
|
||
![]() |
1.6.3 | 49.63 KB | Wed, 20 Apr 2022 10:37:52 GMT | 7 |
|
||
![]() |
1.6.3-beta0003 | 49.65 KB | Wed, 20 Apr 2022 10:35:08 GMT | 7 |
|
||
![]() |
1.6.3-beta0001 | 49.66 KB | Tue, 19 Apr 2022 22:38:16 GMT | 7 |
|
||
![]() |
1.6.2 | 49.3 KB | Sat, 09 Apr 2022 09:20:03 GMT | 7 |
|
||
![]() |
1.6.2-beta0013 | 49.37 KB | Fri, 08 Apr 2022 10:35:03 GMT | 7 |
|
||
![]() |
1.6.1 | 46.18 KB | Sat, 26 Dec 2020 22:40:49 GMT | 6 |
|
||
![]() |
1.6.1-beta0001 | 46.23 KB | Sat, 26 Dec 2020 20:31:08 GMT | 7 |
|
||
![]() |
1.6.0 | 35.09 KB | Tue, 08 Dec 2020 10:54:46 GMT | 7 |
|
||
![]() |
1.6.0-beta0003 | 35.11 KB | Mon, 07 Dec 2020 23:22:39 GMT | 7 |
|
||
![]() |
1.6.0-beta0002 | 34.98 KB | Mon, 07 Dec 2020 23:17:47 GMT | 7 |
|
||
![]() |
1.6.0-beta0001 | 34.97 KB | Mon, 07 Dec 2020 23:15:52 GMT | 7 |
|
||
![]() |
1.5.1 | 30.63 KB | Fri, 27 Nov 2020 20:25:17 GMT | 7 |
|
||
![]() |
1.5.1-beta0006 | 30.65 KB | Fri, 27 Nov 2020 20:23:24 GMT | 6 |
|
||
![]() |
1.5.1-beta0005 | 30.66 KB | Fri, 27 Nov 2020 20:19:33 GMT | 7 |
|
||
![]() |
1.5.1-beta0004 | 30.28 KB | Fri, 27 Nov 2020 20:10:02 GMT | 7 |
|
||
![]() |
1.5.0 | 30.17 KB | Mon, 05 Aug 2019 17:20:20 GMT | 8 |
|
||
![]() |
1.5.0-beta0013 | 30.23 KB | Mon, 05 Aug 2019 17:16:27 GMT | 6 |
|
||
![]() |
1.4.7-beta0010 | 29.01 KB | Mon, 29 Jul 2019 19:14:08 GMT | 7 |
|
||
![]() |
1.4.7-beta0009 | 29.01 KB | Mon, 29 Jul 2019 19:07:37 GMT | 7 |
|
||
![]() |
1.4.7-beta0008 | 29.01 KB | Wed, 24 Jul 2019 10:49:18 GMT | 7 |
|
||
![]() |
1.4.7-beta0007 | 29.01 KB | Wed, 24 Jul 2019 10:46:57 GMT | 6 |
|
||
![]() |
1.4.7-beta0002 | 28.93 KB | Sat, 02 Mar 2019 11:50:33 GMT | 7 |
|
||
![]() |
1.4.6 | 28.93 KB | Sat, 23 Feb 2019 20:35:21 GMT | 6 |
|
||
![]() |
1.4.6-beta0006 | 28.96 KB | Sat, 23 Feb 2019 20:31:23 GMT | 6 |
|
||
![]() |
1.4.6-beta0005 | 28.96 KB | Sat, 23 Feb 2019 20:28:19 GMT | 7 |
|
||
![]() |
1.4.6-beta0001 | 28.73 KB | Thu, 03 Jan 2019 15:11:48 GMT | 5 |
|
||
![]() |
1.4.5 | 28.69 KB | Tue, 23 Oct 2018 15:14:42 GMT | 6 |
|
||
![]() |
1.4.5-beta0003 | 28.72 KB | Tue, 23 Oct 2018 15:11:39 GMT | 6 |
|
||
![]() |
1.4.4 | 27.88 KB | Sat, 15 Sep 2018 13:57:37 GMT | 6 |
|
||
![]() |
1.4.4-beta0017 | 27.89 KB | Sat, 15 Sep 2018 13:54:21 GMT | 6 |
|
||
![]() |
1.4.4-beta0016 | 27.9 KB | Sat, 15 Sep 2018 13:46:27 GMT | 6 |
|
||
![]() |
1.4.4-beta0011 | 26.37 KB | Sat, 15 Sep 2018 13:18:54 GMT | 5 |
|
||
![]() |
1.4.3 | 26.26 KB | Mon, 19 Mar 2018 21:41:29 GMT | 6 |
|
||
![]() |
1.4.3-build-39 | 18 KB | Thu, 01 Feb 2018 18:13:24 GMT | 6 |
|
||
![]() |
1.4.3-build-37 | 17.99 KB | Thu, 11 Jan 2018 19:37:50 GMT | 5 |
|
||
![]() |
1.4.3-beta0011 | 26.28 KB | Mon, 19 Mar 2018 21:28:55 GMT | 6 |
|
||
![]() |
1.4.3-beta0009 | 26.3 KB | Mon, 19 Mar 2018 20:39:16 GMT | 6 |
|
||
![]() |
1.4.3-beta0007 | 26.29 KB | Mon, 19 Mar 2018 20:02:38 GMT | 6 |
|
||
![]() |
1.4.2 | 17.93 KB | Thu, 11 Jan 2018 19:36:34 GMT | 8 |
|
||
![]() |
1.4.2-build-35 | 17.99 KB | Thu, 11 Jan 2018 19:35:01 GMT | 6 |
|
||
![]() |
1.4.2-build-34 | 17.9 KB | Thu, 04 Jan 2018 20:09:41 GMT | 6 |
|
||
![]() |
1.4.2-build-33 | 17.9 KB | Fri, 22 Dec 2017 13:40:30 GMT | 5 |
|
||
![]() |
1.4.2-build-32 | 17.89 KB | Sun, 17 Dec 2017 11:33:41 GMT | 5 |
|
||
![]() |
1.4.2-build-31 | 17.9 KB | Fri, 15 Dec 2017 16:04:30 GMT | 5 |
|
||
![]() |
1.4.1 | 17.83 KB | Thu, 01 Feb 2018 18:07:05 GMT | 5 |
|
||
![]() |
1.4.1-build-29 | 17.89 KB | Fri, 15 Dec 2017 16:01:01 GMT | 5 |
|
||
![]() |
1.4.1-build-28 | 17.86 KB | Sun, 12 Nov 2017 20:58:11 GMT | 6 |
|
||
![]() |
1.4.1-build-27 | 17.86 KB | Sun, 12 Nov 2017 20:55:32 GMT | 6 |
|
||
![]() |
1.4.1-build-26 | 17.86 KB | Sun, 12 Nov 2017 20:20:24 GMT | 6 |
|
||
![]() |
1.4.1-build-25 | 17.86 KB | Sun, 01 Oct 2017 20:55:53 GMT | 6 |
|
||
![]() |
1.4.1-build-24 | 17.86 KB | Fri, 29 Sep 2017 16:15:25 GMT | 6 |
|
||
![]() |
1.4.1-build-23 | 17.86 KB | Fri, 29 Sep 2017 16:11:14 GMT | 6 |
|
||
![]() |
1.4.1-build-22 | 17.86 KB | Thu, 28 Sep 2017 19:10:58 GMT | 6 |
|
||
![]() |
1.4.1-build-21 | 17.86 KB | Thu, 28 Sep 2017 17:41:53 GMT | 6 |
|
||
![]() |
1.4.1-build-20 | 17.86 KB | Fri, 01 Sep 2017 17:59:20 GMT | 6 |
|
||
![]() |
1.4.1-build-19 | 17.86 KB | Fri, 01 Sep 2017 17:33:18 GMT | 6 |
|
||
![]() |
0.3.2-beta0012 | 49.32 KB | Fri, 08 Apr 2022 09:30:58 GMT | 6 |
|
||
![]() |
0.3.2-beta0009 | 46.23 KB | Thu, 07 Apr 2022 21:13:10 GMT | 6 |
|