alielie
2026-09-10 9ec80cafc23f5ee3278cacce3c9f86f4087b435a
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
using System;
using System.Linq.Expressions;
using System.Reflection;
using DynamicExpresso.Exceptions;
 
namespace DynamicExpresso.Visitors
{
    public class DisableReflectionVisitor : ExpressionVisitor
    {
        protected override Expression VisitMethodCall(MethodCallExpression node)
        {
            if (node.Object != null
                && (typeof(Type).IsAssignableFrom(node.Object.Type)
                || typeof(MemberInfo).IsAssignableFrom(node.Object.Type)))
            {
                throw new ReflectionNotAllowedException();
            }
 
            return base.VisitMethodCall(node);
        }
 
        protected override Expression VisitMember(MemberExpression node)
        {
            if ((typeof(Type).IsAssignableFrom(node.Member.DeclaringType)
                || typeof(MemberInfo).IsAssignableFrom(node.Member.DeclaringType))
                && node.Member.Name != "Name")
            {
                throw new ReflectionNotAllowedException();
            }
 
            return base.VisitMember(node);
        }
    }
}