/// <summary> /// Resolves a meta field definition into actual native field. Returns null wen resolution is not possible and field should be skipped /// </summary> public virtual FieldInfo ResolveField(Type nativeType, MetaComplexType.MetaField mfield) { var fname = mfield.FieldName; var fi = nativeType.GetField(fname, BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Public); if (fi.IsNotSerialized) { return(null); } return(fi); }
/// <summary> /// Resolves a meta field definition into actual native field. Returns null wen resolution is not possible and field should be skipped /// </summary> public abstract FieldInfo ResolveField(Type nativeType, MetaComplexType.MetaField mfield);
/// <summary> /// Performs the assignment of portable data into native field /// </summary> public virtual void SetFieldData(object instance, FieldInfo fieldInfo, CompositeReflectedData data, MetaComplexType.MetaField mfield) { var nativeData = data.Document.PortableDataToNativeData(this, data.m_FieldData[mfield.m_Index]); fieldInfo.SetValue(instance, nativeData); }
/// <summary> /// Handles the assignemnt from ReflectedData into CLR fieldInfo. Override to make conversions, i.e. string to bool, int to string etc... /// Return true to indicate that default framework implementation should not be called /// </summary> public abstract bool SetFieldValue(ReadingStrategy readingStrategy, object instance, FieldInfo fieldInfo, CompositeReflectedData data, MetaComplexType.MetaField mfield);