internal protected override bool TryPack(IConfigAccessorProxy configAccessor, object value) { return(pack()); bool pack() { var t = value.GetType(); foreach (var field in getFields(t)) { var v = field.GetValue(value); var hasMarshaller = configAccessor.HasMarshaller(field.FieldType); if (hasMarshaller) { configAccessor.WriteTo(field.FieldType, v, null, field.Name); } else { return(false); } } return(true); } }
internal protected override bool TryUnpack(IConfigAccessorProxy configAccessor, Type supposedType, out object result) { result = Activator.CreateInstance(supposedType); foreach (var field in getFields(supposedType)) { var hasMarshaller = configAccessor.HasMarshaller(field.FieldType); if (hasMarshaller) { var value = configAccessor.ReadFrom(field.FieldType, null, field.Name); field.SetValue(result, value.Value); } else { return(false); } } return(true); }
internal protected abstract bool TryUnpack(IConfigAccessorProxy configAccessor, Type supposedType, out object result);
internal protected abstract bool TryPack(IConfigAccessorProxy configAccessor, object value);