public FieldDeserializeMethod <T> GetFieldDeserializeDelegate <T>() { if (typeof(T).IsValueType) { var method = ValueTypeDeserializeMethods.GetMethodForType(typeof(T)); Debug.Assert(method != null); return((FieldDeserializeMethod <T>)CreateDelegate(typeof(FieldDeserializeMethod <T>), method)); } else { var method = ReferenceFieldDeserializeMethods.GetMethodForType(typeof(T)); Debug.Assert(method != null); return((FieldDeserializeMethod <T>)CreateDelegate(typeof(FieldDeserializeMethod <T>), method)); } }
public bool HasFieldSerializer(Type type) { if (type.IsValueType) { var hasSerializeMethod = ValueTypeSerializeMethods.GetMethodForType(type) != null; Debug.Assert(hasSerializeMethod == (ValueTypeDeserializeMethods.GetMethodForType(type) != null)); // <- debug check for matching deserializer return(hasSerializeMethod); } else { var hasSerializeMethod = ReferenceFieldSerializeMethods.GetMethodForType(type) != null; Debug.Assert(hasSerializeMethod == (ReferenceFieldDeserializeMethods.GetMethodForType(type) != null)); // <- debug check for matching deserializer return(hasSerializeMethod); } }