using System;
using System.IO;
using System.Reflection;
using System.Runtime.InteropServices;
using System.Text;
namespace Souxuexiao.Cache
{
public static class IniConfig
{
static string ConfigurationFilePath;
static IniConfig()
{
var Ass = Assembly.GetExecutingAssembly();
ConfigurationFilePath = Ass.CodeBase.Replace(System.IO.Path.GetExtension(Ass.CodeBase), ".ini").Replace(@"file:///", "");
}
public static string host
{
get
{
return Convert.ToString(GetValue("host", "127.0.0.1:5556"));
}
set
{
SetValue("host", value);
}
}
public static string slave
{
get
{
return Convert.ToString(GetValue("slave", "127.0.0.1:5556"));
}
set
{
SetValue("slave", value);
}
}
public static int WritePoolSize
{
get
{
return Convert.ToInt32(GetValue("WritePoolSize", "10"));
}
set
{
SetValue("WritePoolSize", value);
}
}
public static int ReadPoolSize
{
get
{
return Convert.ToInt32(GetValue("ReadPoolSize", "10"));
}
set
{
SetValue("ReadPoolSize", value);
}
}
static void SetValue(string keyName, object value)
{
NativeMethods.WritePrivateProfileString("redis", keyName, value.ToString(), ConfigurationFilePath);
}
static object GetValue(string keyName, object defaultValue)
{
StringBuilder retVal = new StringBuilder(1024);
int i= NativeMethods.GetPrivateProfileString("redis", keyName, defaultValue.ToString(), retVal, 1024, ConfigurationFilePath);
return retVal.ToString();
}
}
class NativeMethods
{
[DllImport("kernel32")]
internal static extern long WritePrivateProfileString(
string appName,
string keyName,
string value,
string fileName);
[DllImport("kernel32")]
internal static extern int GetPrivateProfileString(
string appName,
string keyName,
string _default,
StringBuilder returnedValue,
int size,
string fileName);
}
}