SparkyTools.XmlConfig
1.1.1
dotnet add package SparkyTools.XmlConfig --version 1.1.1
NuGet\Install-Package SparkyTools.XmlConfig -Version 1.1.1
<PackageReference Include="SparkyTools.XmlConfig" Version="1.1.1" />
paket add SparkyTools.XmlConfig --version 1.1.1
#r "nuget: SparkyTools.XmlConfig, 1.1.1"
// Install SparkyTools.XmlConfig as a Cake Addin #addin nuget:?package=SparkyTools.XmlConfig&version=1.1.1 // Install SparkyTools.XmlConfig as a Cake Tool #tool nuget:?package=SparkyTools.XmlConfig&version=1.1.1
see also:
- SparkyTools.XmlConfig.Fx, which supports .NET framework v.4-4.5.1
- the rest of the "Sparky suite" of .NET utilities and test helpers
ConfigurationSectionDeserializer / ConfigurationSectionListDeserializer
These classes makes it easy to load a strongly-typed object (or IList of objects) from a custom web.config or app.config file section without having to write a custom IConfigurationSectionHandler implementation.
In the .config file, register each custom section with a type of "SparkyTools.XmlConfig.ConfigurationSectionDeserializer" or "SparkyTools.XmlConfig.ConfigurationSectionListDeserializer":
<configuration>
<configSections>
<section name="Foo" type="SparkyTools.XmlConfig.ConfigurationSectionDeserializer, SparkyTools.XmlConfig" />
<section name="FooList" type="SparkyTools.XmlConfig.ConfigurationSectionListDeserializer, SparkyTools.XmlConfig" />
</configSections>
In each registered custom section, specify the object type via the type
attribute. Here's an single instance section:
<Foo type="FooNamespace.Foo, FooAssemblyName">
<Bar>bar</Bar>
<Baz>123.45</Baz>
</Foo>
...and a "list" section: (the type
is the instance type, not "IList..."):
<FooList type="FooNamespace.Bar, FooAssemblyName">
<Foo>
<Bar>bar1</Bar>
<Baz>111.11</Baz>
</Foo>
<Foo>
<Bar>bar2</Bar>
<Baz>222.22</Baz>
</Foo>
</FooList>
To read from your custom .config section, just call the Load method, specifying the object type and the .config section name:
Foo foo = ConfigurationSectionDeserializer.Load<Foo>("Foo");
IList<Foo> fooList = ConfigurationSectionListDeserializer.Load<Foo>("FooList");
DependencyProvider methods
These methods create DependencyProviders for use with apps that use app.config / web.config files:
- ConfigurationSectionDeserializer.DependencyProvider / ConfigurationSectionListDeserializer.DependencyProvider
create DependencyProviders that load data from a .config file section:
using SparkyTools.DependencyProvider; public class Foo { public Foo( DependencyProvider<Bar> barProvider, DependencyProvider<IList<Baz>> bazProvider) { } }
using SparkyTools.XmlConfig; . . . var foo = new Foo( ConfigurationSectionDeserializer.DependencyProvider<Bar>("Bar"), ConfigurationSectionListDeserializer.DependencyProvider<Baz>("BazList"));
- AppSettings.DependencyProvider creates a DependencyProvider that wraps ConfigurationManager.AppSettings:
using SparkyTools.DependencyProvider; public class Qux { private readonly Func<string, string> _getAppSetting; public Qux(DependencyProvider<Func<string, string> appSettingsProvider) { _getAppSetting = appSettingsProvider.GetValue(); } public void MethodUsingAppSettings() { string valueFromAppSettings = _getAppSetting("key); } }
using SparkyTools.XmlConfig; ... var qux = new Qux(AppSettings.DependencyProvider());
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. 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. |
.NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
.NET Standard | netstandard2.0 is compatible. netstandard2.1 was computed. |
.NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
MonoAndroid | monoandroid was computed. |
MonoMac | monomac was computed. |
MonoTouch | monotouch was computed. |
Tizen | tizen40 was computed. tizen60 was computed. |
Xamarin.iOS | xamarinios was computed. |
Xamarin.Mac | xamarinmac was computed. |
Xamarin.TVOS | xamarintvos was computed. |
Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETStandard 2.0
- SparkyTools.DependencyProvider (>= 1.1.0)
- System.Configuration.ConfigurationManager (>= 4.4.1)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
Added AppSettings.DependencyProvider()