Ejemplo n.º 1
0
        public static void AcceptVisitor <TResult> (
            this CustomAttribute customAttribute,
            MetadataVisitor <TResult> visitor)
        {
            if (!visitor.ShouldTraverseInto(visitor.VisitCustomAttribute(customAttribute)))
            {
                return;
            }

            customAttribute.AttributeType.AcceptVisitor(visitor);
            customAttribute.Constructor.AcceptVisitor(visitor);

            if (customAttribute.HasConstructorArguments)
            {
                foreach (var argument in customAttribute.ConstructorArguments)
                {
                    argument.AcceptVisitor(visitor);
                }
            }

            if (customAttribute.HasFields)
            {
                foreach (var field in customAttribute.Fields)
                {
                    field.AcceptVisitor(visitor);
                }
            }

            if (customAttribute.HasProperties)
            {
                foreach (var property in customAttribute.Properties)
                {
                    property.AcceptVisitor(visitor);
                }
            }
        }