public static void CopyProperties(object dest, object src)
        {
            if (dest == null || src == null)
            {
                return;
            }

            var values = RecursiveObjectReader.GetProperties(src);

            SetProperties(dest, values);
        }
        public static void SetProperties(object obj, IDictionary <string, object> values)
        {
            if (values == null || values.Count == 0)
            {
                return;
            }

            foreach (var entry in RecursiveObjectReader.GetProperties(values))
            {
                SetProperty(obj, entry.Key, entry.Value);
            }
        }