public static object PopulateObjectMembers(object obj, MemberInfo[] members, object[] data)
        {
            // http://msdn.microsoft.com/en-us/library/system.runtime.serialization.formatterservices.populateobjectmembers(v=vs.110).aspx

            members.Zip(data,
                (m, value) =>
                {
                    var f = m as FieldInfo;
                    if (f != null)
                    {
                        f.SetValue(obj, value);
                    }

                    return false;
                }
            ).ToArray();


            return obj;
        }