예제 #1
0
        private void WalkIntoProperty(IPropertyWalkerVisitor <TResult, TWalkInfo> visitor, PropertyInfo property, TWalkInfo walkInfo)
        {
            var fieldsWithPropertyPrefix = new List <string>();

            var propertyWalkInfoFields = walkInfo.Fields.Contains("*") ?
                                         new List <string> {
                "*"
            } :
            RemovePropertyPrefixFromFields(fieldsWithPropertyPrefix = GetFieldsWithPropertyPrefix(walkInfo.Fields, property.Name).ToList(), property.Name);

            visitor.Visit(property, BuildWalkInfoForProperty(walkInfo, propertyWalkInfoFields));

            walkInfo.Fields = walkInfo.Fields.Except(fieldsWithPropertyPrefix, StringComparer.OrdinalIgnoreCase);
        }