removed code redundancies.

This commit is contained in:
kay.one 2013-07-26 22:02:25 -07:00
parent 6d3a604677
commit 9a24268ee7
24 changed files with 104 additions and 185 deletions

View file

@ -93,12 +93,9 @@ namespace Exceptron.Client.fastJSON
string val = "";
if (_tyname.TryGetValue(t, out val))
return val;
else
{
string s = t.AssemblyQualifiedName;
_tyname.Add(t, s);
return s;
}
string s = t.AssemblyQualifiedName;
_tyname.Add(t, s);
return s;
}
readonly SafeDictionary<string, Type> _typecache = new SafeDictionary<string, Type>();
@ -107,12 +104,9 @@ namespace Exceptron.Client.fastJSON
Type val = null;
if (_typecache.TryGetValue(typename, out val))
return val;
else
{
Type t = Type.GetType(typename);
_typecache.Add(typename, t);
return t;
}
Type t = Type.GetType(typename);
_typecache.Add(typename, t);
return t;
}
readonly SafeDictionary<Type, CreateObject> _constrcache = new SafeDictionary<Type, CreateObject>();
@ -126,17 +120,14 @@ namespace Exceptron.Client.fastJSON
{
return c();
}
else
{
DynamicMethod dynMethod = new DynamicMethod("_", objtype, null, true);
ILGenerator ilGen = dynMethod.GetILGenerator();
DynamicMethod dynMethod = new DynamicMethod("_", objtype, null, true);
ILGenerator ilGen = dynMethod.GetILGenerator();
ilGen.Emit(OpCodes.Newobj, objtype.GetConstructor(Type.EmptyTypes));
ilGen.Emit(OpCodes.Ret);
c = (CreateObject)dynMethod.CreateDelegate(typeof(CreateObject));
_constrcache.Add(objtype, c);
return c();
}
ilGen.Emit(OpCodes.Newobj, objtype.GetConstructor(Type.EmptyTypes));
ilGen.Emit(OpCodes.Ret);
c = (CreateObject)dynMethod.CreateDelegate(typeof(CreateObject));
_constrcache.Add(objtype, c);
return c();
}
catch (Exception exc)
{
@ -188,22 +179,19 @@ namespace Exceptron.Client.fastJSON
{
return sd;
}
else
sd = new SafeDictionary<string, myPropInfo>();
var pr = type.GetProperties(BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Instance);
foreach (var p in pr)
{
sd = new SafeDictionary<string, myPropInfo>();
var pr = type.GetProperties(BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Instance);
foreach (var p in pr)
{
myPropInfo d = CreateMyProp(p.PropertyType, p.Name);
d.CanWrite = p.CanWrite;
d.setter = CreateSetMethod(p);
d.getter = CreateGetMethod(p);
sd.Add(p.Name, d);
}
_propertycache.Add(typename, sd);
return sd;
myPropInfo d = CreateMyProp(p.PropertyType, p.Name);
d.CanWrite = p.CanWrite;
d.setter = CreateSetMethod(p);
d.getter = CreateGetMethod(p);
sd.Add(p.Name, d);
}
_propertycache.Add(typename, sd);
return sd;
}
private myPropInfo CreateMyProp(Type t, string name)
@ -342,16 +330,16 @@ namespace Exceptron.Client.fastJSON
if (conversionType == typeof(int))
return (int)CreateLong((string)value);
else if (conversionType == typeof(long))
if (conversionType == typeof(long))
return CreateLong((string)value);
else if (conversionType == typeof(string))
if (conversionType == typeof(string))
return value;
else if (conversionType == typeof(Guid))
if (conversionType == typeof(Guid))
return CreateGuid((string)value);
else if (conversionType.IsEnum)
if (conversionType.IsEnum)
return CreateEnum(conversionType, (string)value);
return Convert.ChangeType(value, conversionType, CultureInfo.InvariantCulture);
@ -550,8 +538,7 @@ namespace Exceptron.Client.fastJSON
{
if (s.Length > 30)
return new Guid(s);
else
return new Guid(Convert.FromBase64String(s));
return new Guid(Convert.FromBase64String(s));
}
private DateTime CreateDateTime(string value)
@ -571,8 +558,7 @@ namespace Exceptron.Client.fastJSON
if (UseUTCDateTime == false && utc == false)
return new DateTime(year, month, day, hour, min, sec);
else
return new DateTime(year, month, day, hour, min, sec, DateTimeKind.Utc).ToLocalTime();
return new DateTime(year, month, day, hour, min, sec, DateTimeKind.Utc).ToLocalTime();
}
#if SILVERLIGHT