Nucs.JsonSettings.Autosave
2.0.0-alpha1
This is a prerelease version of Nucs.JsonSettings.Autosave.
There is a newer version of this package available.
See the version list below for details.
See the version list below for details.
dotnet add package Nucs.JsonSettings.Autosave --version 2.0.0-alpha1
NuGet\Install-Package Nucs.JsonSettings.Autosave -Version 2.0.0-alpha1
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="Nucs.JsonSettings.Autosave" Version="2.0.0-alpha1" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add Nucs.JsonSettings.Autosave --version 2.0.0-alpha1
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#r "nuget: Nucs.JsonSettings.Autosave, 2.0.0-alpha1"
#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.
// Install Nucs.JsonSettings.Autosave as a Cake Addin #addin nuget:?package=Nucs.JsonSettings.Autosave&version=2.0.0-alpha1&prerelease // Install Nucs.JsonSettings.Autosave as a Cake Tool #tool nuget:?package=Nucs.JsonSettings.Autosave&version=2.0.0-alpha1&prerelease
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
JsonSettings
Easiest way you'll ever write settings for your app.
- Modular
- One Liner
- Abstract
Install
PM> Install-Package nucs.JsonSettings
Getting Started
See https://github.com/Nucs/JsonSettings/wiki/<br> Test project: https://github.com/Nucs/JsonSettings/tree/master/tests/nucs.JsonSettings.xTests<br> Blog Posts: http://blog.elibelash.com/2017/10/settings-file-in-your-project.html
JsonSettings is the base abstract class that inherits ISavable.<br> Here is a self explanatory quicky of to how and what:
- I want a hardcoded settings file
//Step 1: create a class and inherit JsonSettings
class MySettings : JsonSettings {
//Step 2: override a default FileName or keep it empty. Just make sure to specify it when calling Load!
//This is used for default saving and loading so you won't have to specify the filename/path every time.
//Putting just a filename without folder will put it inside the executing file's directory.
public override string FileName { get; set; } = "TheDefaultFilename.extension"; //for loading and saving.
#region Settings
public string SomeProperty { get; set; }
public int SomeNumberWithDefaultValue { get; set; } = 1;
[JsonIgnore] public char ImIgnoredAndIWontBeSaved { get; set; }
#endregion
//Step 3: Override parent's constructors
public MySettings() { }
public MySettings(string fileName) : base(fileName) { }
}
//Step 4: Load
public MySettings Settings = JsonSettings.Load<MySettings>("config.json"); //relative path to executing file.
//or create a new empty
public MySettings Settings = JsonSettings.Construct<MySettings>("config.json");
//Step 5: Pwn.
Settings.SomeProperty = "ok";
Settings.Save();
- I want a dynamic settings
- Dynamic settings will automatically create new keys.
ValueType
s are returned asNullable<Type>
, therefore if a key doesn't exist - a null is returned.
//Step 1: Just load it, it'll be created if doesn't exist.
public SettingsBag Settings = JsonSettings.Load<SettingsBag>("config.json");
//Step 2: use!
Settings["key"] = "dat value tho";
Settings["key2"] = 123; //dat number tho
dynamic dyn = Settings.AsDynamic();
if ((int?)dyn.key2==123)
Console.WriteLine("explode");
dyn.Save(); /* or */ Settings.Save();
- I want a encrypted settings file
- Uses AES/Rijndael
- Can be applied to any settings class because it is a module.
MySettings Settings = JsonSettings.Load<MySettings>("config.json", q=>q.WithEncryption("mysupersecretpassword"));
SettingsBag Settings = JsonSettings.Load<SettingsBag>("config.json", q=>q.WithEncryption("mysupersecretpassword"));
//or
MySettings Settings = JsonSettings.Configure<MySettings>("config.json")
.WithEncryption("mysupersecretpassword")
//or: .WithModule<RijndaelModule>("pass");
.LoadNow();
SettingsBag Settings = JsonSettings.Configure<SettingsBag>("config.json")
.WithEncryption("mysupersecretpassword")
//or: .WithModule<RijndaelModule>("pass");
.LoadNow();
- I want dynamic settings to automatically save when changed
- note: SettingsBag has it's own implementation of EnableAutosave().
//Step 1:
SettingsBag Settings = JsonSettings.Load<SettingsBag>("config.json").EnableAutosave();
//Unavailable for hardcoded settings yet! (ty netstandard2.0 for not being awesome on proxies)
//Step 2:
Settings.AsDynamic().key = "wow"; //BOOM! SAVED!
Settings["key"] = "wow two"; //BOOM! SAVED!
- I want hardcoded settings to automatically save when changed
- Requires package
nucs.JsonSettings.Autosave
that usesCastle.Core
.
- Requires package
Settings x = JsonSettings.Load<Settings>().EnableAutosave();
//or:
ISettings x = JsonSettings.Load<Settings>().EnableIAutosave<ISettings>(); //Settings implements interface ISettings
x.Property = "value"; //Booyah! SAVED!
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. |
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
-
.NETStandard 2.0
- Castle.Core (>= 4.4.1)
- Newtonsoft.Json (>= 12.0.3)
- nucs.JsonSettings (>= 2.0.0-alpha1)
- System.Security.SecureString (>= 4.3.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories (2)
Showing the top 2 popular GitHub repositories that depend on Nucs.JsonSettings.Autosave:
Repository | Stars |
---|---|
HandyOrg/HandyWinGet
GUI for installing apps through WinGet and Creating Yaml file
|
|
WinUICommunity/WinUICommunity
WinUICommunity is a collection of useful classes, controls, styles, and codes for WinUI 3. Create a WinUI 3 app in less than a minute with the built-in project templates and scaffolding tools.
|
Version | Downloads | Last updated |
---|---|---|
2.0.2 | 4,980 | 4/5/2023 |
2.0.1 | 1,020 | 1/13/2023 |
2.0.0-alpha7 | 4,032 | 5/23/2021 |
2.0.0-alpha5 | 650 | 5/9/2021 |
2.0.0-alpha4 | 646 | 5/8/2021 |
2.0.0-alpha3 | 709 | 5/1/2021 |
2.0.0-alpha2 | 667 | 3/31/2021 |
2.0.0-alpha1 | 650 | 3/29/2021 |
1.0.0 | 2,927 | 6/3/2018 |