예제 #1
0
        public static void AcceptVisitor <TResult> (
            this MethodReference methodReference,
            MetadataVisitor <TResult> visitor)
        {
            if (!visitor.ShouldTraverseInto(visitor.VisitMethodReference(methodReference)))
            {
                return;
            }

            if (methodReference.HasGenericParameters)
            {
                methodReference.GenericParameters.AcceptVisitor(visitor);
            }

            if (methodReference.HasParameters)
            {
                foreach (var parameter in methodReference.Parameters)
                {
                    parameter.AcceptVisitor(visitor);
                }
            }

            methodReference.ReturnType.AcceptVisitor(visitor);
            methodReference.DeclaringType.AcceptVisitor(visitor);
        }