public bool CanHandle(object obj, IGraph uow)
        {
            if (obj == null)
            {
                return(false);
            }

            //if it's not managedhydrateable skip immediately
            if (!(obj is IManagedHydrateable))
            {
                return(false);
            }

            //do we have the indicated value manager?  if not, we'll skip and let the chain decide
            IManagedHydrateable hyd = obj as IManagedHydrateable;
            var mgrId = hyd.GetValueManagerId();
            var mgr   = uow.ChainOfResponsibility.GetValueManagerById(mgrId);

            if (mgr == null)
            {
                return(false);
            }

            return(true);
        }
        public string DehydrateValue(object obj, IGraph uow)
        {
            if (!(obj is IManagedHydrateable))
            {
                return(null);
            }

            //do we have the indicated value manager?  if not, we'll skip and let the chain decide
            IManagedHydrateable hyd = obj as IManagedHydrateable;
            var mgrId = hyd.GetValueManagerId();
            var mgr   = uow.ChainOfResponsibility.GetValueManagerById(mgrId);

            if (mgr == null)
            {
                return(null);
            }

            var val = mgr.DehydrateValue(obj, uow);

            return(LengthEncoder.LengthEncodeList(mgrId, val));
        }