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);
        }
Example #3
0
 internal protected abstract bool TryUnpack(IConfigAccessorProxy configAccessor, Type supposedType, out object result);
Example #4
0
 internal protected abstract bool TryPack(IConfigAccessorProxy configAccessor, object value);