ConfigurationDotNet 1.5.0
dotnet add package ConfigurationDotNet --version 1.5.0
NuGet\Install-Package ConfigurationDotNet -Version 1.5.0
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="ConfigurationDotNet" Version="1.5.0" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="ConfigurationDotNet" Version="1.5.0" />
<PackageReference Include="ConfigurationDotNet" />
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add ConfigurationDotNet --version 1.5.0
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#r "nuget: ConfigurationDotNet, 1.5.0"
#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.
#:package ConfigurationDotNet@1.5.0
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=ConfigurationDotNet&version=1.5.0
#tool nuget:?package=ConfigurationDotNet&version=1.5.0
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
ConfigDotNet
What is ConfigDotNet?
The repo provides a convenient way to work with configurations
Features
- Projecting a config onto classes and vice versa
- Interfaces allow you to build a single code base
- Immutability, thread safety and fastness
Coming soon
- Ability to work with files (xml, json and txt).
- Specialized classes for obtaining specific data from a file (database configuration, programs, etc.)
Installation
Requires .NET 7+ to use
How it works
We will create Configuration<T>
which contains key value pairs (string - T)
using:
- an object derived from
IDictionry<string, Т>
, - two
IEnumerable<Т>
objects representing collections of keys and values, - a collection of specialized classes
Section<Т>
.
Example (C#):
var config = new Configuration<int>(dict); // dicts type is Dictionary<string, int>
var config = new Configuration<int>(keys, values); // keys is List<string>, values is IEnumerable<int>
var config = new Configuration<int>(sections); // sections is IEnumerable<Section<int>>
Model mapping:
Example (C#):
- TestModel.cs
using ConfigDotNet.ObjectModel;
// Model should have a constructor without parameters
[ConfigurationModel<int>] // Marks that all section should be Int32 type
public class Model
{
// Member of model with SectionAttribute shouldn't be a readonly
[Section("A")] public int A; // You need to define the section name for the fields explicitly
[Section] public int B { get; set; } // If the name is not specified explicitly,
//the property name will be used by default
[Section("D")] public int C { get; set; } // You can change the section name
}
- Program.cs
using ConfigDotNet.ObjectModel;
using ConfigDotNet;
var dict = new Dictionary<string, int>()
{
{ "A", 1 },
{ "B", 2 },
{ "D", 3 }
};
var config = new Configuration<int>(dict);
Model model = ConfigurationMapper.MapToModel<Model, int>(config);
Configuration<int> configOnModel = ConfigurationMapper.MapToConfig<Model, int>(config);
Assert.Debug(config == configOnModel); // expression is true
License
ConfigDotNet is licensed under the MIT license.
Free Software, Hell Yeah!
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net8.0 is compatible. 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. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
-
net8.0
- No dependencies.
NuGet packages (1)
Showing the top 1 NuGet packages that depend on ConfigurationDotNet:
Package | Downloads |
---|---|
ConfigurationDotNet.ObjectModel
Extension configuration opportunities |
GitHub repositories
This package is not used by any popular GitHub repositories.