68 lines
1.5 KiB
C#
68 lines
1.5 KiB
C#
|
using System;
|
||
|
using System.IO;
|
||
|
using System.Reflection;
|
||
|
using System.Runtime.Serialization.Formatters.Soap;
|
||
|
|
||
|
namespace Aitex.Core.Util
|
||
|
{
|
||
|
public class SerializeStatic
|
||
|
{
|
||
|
public static bool Save(Type static_class, string filename)
|
||
|
{
|
||
|
try
|
||
|
{
|
||
|
FieldInfo[] fields = static_class.GetFields(BindingFlags.Static | BindingFlags.Public);
|
||
|
object[,] array = new object[fields.Length, 2];
|
||
|
int num = 0;
|
||
|
FieldInfo[] array2 = fields;
|
||
|
foreach (FieldInfo fieldInfo in array2)
|
||
|
{
|
||
|
array[num, 0] = fieldInfo.Name;
|
||
|
array[num, 1] = fieldInfo.GetValue(null);
|
||
|
num++;
|
||
|
}
|
||
|
Stream stream = File.Open(filename, FileMode.Create);
|
||
|
SoapFormatter soapFormatter = new SoapFormatter();
|
||
|
soapFormatter.Serialize(stream, array);
|
||
|
stream.Close();
|
||
|
return true;
|
||
|
}
|
||
|
catch
|
||
|
{
|
||
|
return false;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
public static bool Load(Type static_class, string filename)
|
||
|
{
|
||
|
try
|
||
|
{
|
||
|
FieldInfo[] fields = static_class.GetFields(BindingFlags.Static | BindingFlags.Public);
|
||
|
Stream stream = File.Open(filename, FileMode.Open);
|
||
|
SoapFormatter soapFormatter = new SoapFormatter();
|
||
|
object[,] array = soapFormatter.Deserialize(stream) as object[,];
|
||
|
stream.Close();
|
||
|
if (array.GetLength(0) != fields.Length)
|
||
|
{
|
||
|
return false;
|
||
|
}
|
||
|
int num = 0;
|
||
|
FieldInfo[] array2 = fields;
|
||
|
foreach (FieldInfo fieldInfo in array2)
|
||
|
{
|
||
|
if (fieldInfo.Name == array[num, 0] as string)
|
||
|
{
|
||
|
fieldInfo.SetValue(null, array[num, 1]);
|
||
|
}
|
||
|
num++;
|
||
|
}
|
||
|
return true;
|
||
|
}
|
||
|
catch
|
||
|
{
|
||
|
return false;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|