Ejemplo n.º 1
0
        /// <summary>
        /// Recursively hides the properties, and any child properties.
        /// </summary>
        /// <param name="maskedQueryValue">The query value with properties to hide.</param>
        /// <param name="propertyName">The name of the property to hide.</param>
        private static void HidePropertyRecursive(MaskedQueryStructuralValue maskedQueryValue, string propertyName)
        {
            var propertyValue = maskedQueryValue.GetValue(propertyName) as QueryStructuralValue;
            if (propertyValue != null)
            {
                var maskedPropertyValue = propertyValue as MaskedQueryStructuralValue;
                if (maskedPropertyValue == null)
                {
                    maskedPropertyValue = MaskedQueryStructuralValue.Create(propertyValue);
                }

                var subPropertyNames = maskedPropertyValue.AllMemberNames.ToList();
                foreach (string subPropertyName in subPropertyNames)
                {
                    HidePropertyRecursive(maskedPropertyValue, subPropertyName);
                }

                maskedQueryValue.SetValue(propertyName, maskedPropertyValue);
            }

            maskedQueryValue.HideMember(propertyName);
        }