ConfigurationDotNet.ObjectModel 1.5.0

dotnet add package ConfigurationDotNet.ObjectModel --version 1.5.0
                    
NuGet\Install-Package ConfigurationDotNet.ObjectModel -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.ObjectModel" Version="1.5.0" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="ConfigurationDotNet.ObjectModel" Version="1.5.0" />
                    
Directory.Packages.props
<PackageReference Include="ConfigurationDotNet.ObjectModel" />
                    
Project file
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.ObjectModel --version 1.5.0
                    
#r "nuget: ConfigurationDotNet.ObjectModel, 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.ObjectModel@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.ObjectModel&version=1.5.0
                    
Install as a Cake Addin
#tool nuget:?package=ConfigurationDotNet.ObjectModel&version=1.5.0
                    
Install as a Cake Tool

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 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.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
1.5.0 179 1/18/2024