Added Storer interface and ini storer and registry storer implementations
This commit is contained in:
parent
dd5fc290b2
commit
7fdc1a0ad4
9
SweetLib/Classes/Exception/RegistryStorerException.cs
Normal file
9
SweetLib/Classes/Exception/RegistryStorerException.cs
Normal file
|
@ -0,0 +1,9 @@
|
|||
namespace SweetLib.Classes.Exception
|
||||
{
|
||||
public class RegistryStorerException : System.Exception
|
||||
{
|
||||
public RegistryStorerException(){}
|
||||
|
||||
public RegistryStorerException(string message):base(message) {}
|
||||
}
|
||||
}
|
23
SweetLib/Classes/Storer/IStorer.cs
Normal file
23
SweetLib/Classes/Storer/IStorer.cs
Normal file
|
@ -0,0 +1,23 @@
|
|||
namespace SweetLib.Classes.Storer
|
||||
{
|
||||
public interface IStorer
|
||||
{
|
||||
string ReadString(string section, string key, string defaultValue = "");
|
||||
|
||||
int ReadInteger(string section, string key, int defaultValue = 0);
|
||||
|
||||
bool ReadBool(string section, string key, bool defaultValue = false);
|
||||
|
||||
bool HasKey(string section, string key);
|
||||
|
||||
void WriteString(string section, string key, string value);
|
||||
|
||||
void WriteInteger(string section, string key, int value);
|
||||
|
||||
void WriteBool(string section, string key, bool value);
|
||||
|
||||
void DeleteKey(string section, string key);
|
||||
|
||||
void DeleteSection(string section);
|
||||
}
|
||||
}
|
72
SweetLib/Classes/Storer/IniFileStorer.cs
Normal file
72
SweetLib/Classes/Storer/IniFileStorer.cs
Normal file
|
@ -0,0 +1,72 @@
|
|||
using System.Runtime.InteropServices;
|
||||
using System.Text;
|
||||
|
||||
namespace SweetLib.Classes.Storer
|
||||
{
|
||||
public class IniFileStorer : IStorer
|
||||
{
|
||||
public string FileName { get; }
|
||||
|
||||
[DllImport("kernel32", CharSet = CharSet.Unicode)]
|
||||
static extern long WritePrivateProfileString(string Section, string Key, string Value, string FilePath);
|
||||
|
||||
[DllImport("kernel32", CharSet = CharSet.Unicode)]
|
||||
static extern int GetPrivateProfileString(string Section, string Key, string Default, StringBuilder RetVal, int Size, string FilePath);
|
||||
|
||||
public IniFileStorer(string fileName)
|
||||
{
|
||||
FileName = fileName;
|
||||
}
|
||||
|
||||
public string ReadString(string section, string key, string defaultValue = "")
|
||||
{
|
||||
var builder = new StringBuilder(255);
|
||||
GetPrivateProfileString(section, key, defaultValue, builder, 255, FileName);
|
||||
return builder.ToString();
|
||||
}
|
||||
|
||||
public int ReadInteger(string section, string key, int defaultValue = 0)
|
||||
{
|
||||
int result;
|
||||
if (!int.TryParse(ReadString(section, key, defaultValue.ToString()), out result))
|
||||
result = defaultValue;
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
public bool ReadBool(string section, string key, bool defaultValue = false)
|
||||
{
|
||||
return ReadInteger(section, key, defaultValue ? 1 : 0) > 0;
|
||||
}
|
||||
|
||||
public bool HasKey(string section, string key)
|
||||
{
|
||||
return ReadString(section, key).Length > 0;
|
||||
}
|
||||
|
||||
public void WriteString(string section, string key, string value)
|
||||
{
|
||||
WritePrivateProfileString(section, key, value, FileName);
|
||||
}
|
||||
|
||||
public void WriteInteger(string section, string key, int value)
|
||||
{
|
||||
WriteString(section, key, value.ToString());
|
||||
}
|
||||
|
||||
public void WriteBool(string section, string key, bool value)
|
||||
{
|
||||
WriteInteger(section, key, value ? 1 : 0);
|
||||
}
|
||||
|
||||
public void DeleteKey(string section, string key)
|
||||
{
|
||||
WriteString(section, key, null);
|
||||
}
|
||||
|
||||
public void DeleteSection(string section)
|
||||
{
|
||||
WriteString(section, null, null);
|
||||
}
|
||||
}
|
||||
}
|
73
SweetLib/Classes/Storer/RegistryStorer.cs
Normal file
73
SweetLib/Classes/Storer/RegistryStorer.cs
Normal file
|
@ -0,0 +1,73 @@
|
|||
using Microsoft.Win32;
|
||||
using SweetLib.Classes.Exception;
|
||||
|
||||
namespace SweetLib.Classes.Storer
|
||||
{
|
||||
public class RegistryStorer : IStorer
|
||||
{
|
||||
public RegistryKey BaseRegistryKey { get; }
|
||||
|
||||
public RegistryStorer(string appName) : this(Registry.CurrentUser, appName) { }
|
||||
|
||||
public RegistryStorer(RegistryKey baseRegistryKey, string appName)
|
||||
{
|
||||
baseRegistryKey = baseRegistryKey.CreateSubKey("SOFTWARE");
|
||||
BaseRegistryKey = baseRegistryKey?.CreateSubKey(appName);
|
||||
|
||||
if (BaseRegistryKey == null)
|
||||
throw new RegistryStorerException("Unable to create registriy key.");
|
||||
}
|
||||
|
||||
public string ReadString(string section, string key, string defaultValue = "")
|
||||
{
|
||||
var localRegKey = BaseRegistryKey.OpenSubKey(section);
|
||||
return (string)localRegKey?.GetValue(key.ToUpper());
|
||||
}
|
||||
|
||||
public int ReadInteger(string section, string key, int defaultValue = 0)
|
||||
{
|
||||
int result;
|
||||
if (!int.TryParse(ReadString(section, key, defaultValue.ToString()), out result))
|
||||
result = defaultValue;
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
public bool ReadBool(string section, string key, bool defaultValue = false)
|
||||
{
|
||||
return ReadInteger(section, key, defaultValue ? 1 : 0) > 0;
|
||||
}
|
||||
|
||||
public bool HasKey(string section, string key)
|
||||
{
|
||||
return ReadString(section, key).Length > 0;
|
||||
}
|
||||
|
||||
public void WriteString(string section, string key, string value)
|
||||
{
|
||||
var localRegKey = BaseRegistryKey.CreateSubKey(section);
|
||||
localRegKey?.SetValue(key.ToUpper(), value);
|
||||
}
|
||||
|
||||
public void WriteInteger(string section, string key, int value)
|
||||
{
|
||||
WriteString(section, key, value.ToString());
|
||||
}
|
||||
|
||||
public void WriteBool(string section, string key, bool value)
|
||||
{
|
||||
WriteInteger(section, key, value ? 1 : 0);
|
||||
}
|
||||
|
||||
public void DeleteKey(string section, string key)
|
||||
{
|
||||
var localRegKey = BaseRegistryKey.CreateSubKey(section);
|
||||
localRegKey?.DeleteValue(key);
|
||||
}
|
||||
|
||||
public void DeleteSection(string section)
|
||||
{
|
||||
BaseRegistryKey.DeleteSubKey(section);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -41,6 +41,10 @@
|
|||
<Reference Include="System.Xml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="Classes\Exception\RegistryStorerException.cs" />
|
||||
<Compile Include="Classes\Storer\IniFileStorer.cs" />
|
||||
<Compile Include="Classes\Storer\IStorer.cs" />
|
||||
<Compile Include="Classes\Storer\RegistryStorer.cs" />
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
<Compile Include="Utils\Logger\Memory\ArchivableConsoleLogMemory.cs" />
|
||||
<Compile Include="Utils\Logger\Memory\ILogMemory.cs" />
|
||||
|
|
Loading…
Reference in a new issue