public object FromDictionary(ICustomTypeDeserializerRegistry registry, Type contractType, Dictionary <byte, object> parameters) { object obj = Activator.CreateInstance(contractType); MethodInfo getCustomTypeBiserializer = registry.GetType().GetMethod("GetCustomTypeDeserializer"); foreach (var indexToType in _contractTypeToClassInfoInfos[contractType]) { if (!parameters.TryGetValue(indexToType.Key, out object paramterObject)) { continue; } var gen = getCustomTypeBiserializer.MakeGenericMethod(new Type[] { indexToType.Value.FieldInfo.FieldType }); var customTypeBiserializerInstance = gen.Invoke(registry, new object[0]); var customTypeBiserializerType = customTypeBiserializerInstance.GetType(); var deserializionMethod = customTypeBiserializerType.GetMethod("Deserialize"); var result = deserializionMethod.Invoke(customTypeBiserializerInstance, new object[] { registry, paramterObject, indexToType.Value.FieldInfo }); indexToType.Value.FieldInfo.SetValue(obj, result); } return(obj); }
public double Deserialize(ICustomTypeDeserializerRegistry registry, object obj, FieldInfo fieldInfo) { return(Convert.ToDouble(obj)); }
public short Deserialize(ICustomTypeDeserializerRegistry registry, object obj, FieldInfo fieldInfo) { return(Convert.ToInt16(obj)); }
public T Deserialize(ICustomTypeDeserializerRegistry registry, object obj, FieldInfo fieldInfo) { return((T)obj); }
public Guid Deserialize(ICustomTypeDeserializerRegistry registry, object obj, FieldInfo fieldInfo) { return(new Guid((byte[])obj)); }
public bool Deserialize(ICustomTypeDeserializerRegistry registry, object obj, FieldInfo fieldInfo) { return(Convert.ToBoolean(obj)); }
public T[] Deserialize(ICustomTypeDeserializerRegistry registry, object obj, FieldInfo fieldInfo) { throw new NotImplementedException(); }
public T FromDictionary <T>(ICustomTypeDeserializerRegistry registry, Dictionary <byte, object> parameters) where T : new() { return((T)FromDictionary(registry, typeof(T), parameters)); }
public GameTimeStamp Deserialize(ICustomTypeDeserializerRegistry registry, object obj, FieldInfo fieldInfo) { return(new GameTimeStamp(registry.GetCustomTypeDeserializer <long>().Deserialize(registry, obj, fieldInfo))); }
public float Deserialize(ICustomTypeDeserializerRegistry registry, object obj, FieldInfo fieldInfo) { return(Convert.ToSingle(obj)); }
public FixPoint[] Deserialize(ICustomTypeDeserializerRegistry registry, object obj, FieldInfo fieldInfo) { return(Array.ConvertAll((long[])obj, FixPoint.FromInternalValue)); }
public FixPoint Deserialize(ICustomTypeDeserializerRegistry registry, object obj, FieldInfo fieldInfo) { return(FixPoint.FromInternalValue(registry.GetCustomTypeDeserializer <long>().Deserialize(registry, obj, fieldInfo))); }