|
using System;
using System.Linq.Expressions;
using System.Reflection;
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);
}
}
}
|
By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.
If a file you wish to view isn't highlighted, and is a text file (not binary), please
let us know and we'll add colourisation support for it.
This member has not yet provided a Biography. Assume it's interesting and varied, and probably something to do with programming.