@@ -782,6 +782,13 @@ public bool OptionNewFunctionEvaluationActive
782
782
/// </summary>
783
783
public bool OptionScriptNeedSemicolonAtTheEndOfLastExpression { get ; set ; } = true ;
784
784
785
+ /// <summary>
786
+ /// If <c>true</c> Allow to access fields, properties and methods that are not declared public. (private, protected and internal)
787
+ /// If <c>false</c> Allow to access only to public members.
788
+ /// Default : false
789
+ /// </summary>
790
+ public bool OptionAllowNonPublicMembersAccess { get ; set ; }
791
+
785
792
#endregion
786
793
787
794
#region Reflection flags
@@ -794,6 +801,8 @@ protected virtual BindingFlags InstanceBindingFlag
794
801
795
802
if ( ! OptionCaseSensitiveEvaluationActive )
796
803
flag |= BindingFlags . IgnoreCase ;
804
+ if ( OptionAllowNonPublicMembersAccess )
805
+ flag |= BindingFlags . NonPublic ;
797
806
798
807
return flag ;
799
808
}
@@ -807,6 +816,8 @@ protected virtual BindingFlags StaticBindingFlag
807
816
808
817
if ( ! OptionCaseSensitiveEvaluationActive )
809
818
flag |= BindingFlags . IgnoreCase ;
819
+ if ( OptionAllowNonPublicMembersAccess )
820
+ flag |= BindingFlags . NonPublic ;
810
821
811
822
return flag ;
812
823
}
@@ -1769,7 +1780,7 @@ protected virtual bool EvaluateVarOrFunc(string expression, Stack<object> stack,
1769
1780
1770
1781
if ( inObject
1771
1782
|| Context ? . GetType ( )
1772
- . GetMethods ( )
1783
+ . GetMethods ( InstanceBindingFlag )
1773
1784
. Any ( methodInfo => methodInfo . Name . Equals ( varFuncName , StringComparisonForCasing ) ) == true )
1774
1785
{
1775
1786
if ( inObject && ( stack . Count == 0 || stack . Peek ( ) is ExpressionOperator ) )
@@ -1945,10 +1956,10 @@ protected virtual bool EvaluateVarOrFunc(string expression, Stack<object> stack,
1945
1956
{
1946
1957
if ( inObject
1947
1958
|| Context ? . GetType ( )
1948
- . GetProperties ( )
1959
+ . GetProperties ( InstanceBindingFlag )
1949
1960
. Any ( propInfo => propInfo . Name . Equals ( varFuncName , StringComparisonForCasing ) ) == true
1950
1961
|| Context ? . GetType ( )
1951
- . GetFields ( )
1962
+ . GetFields ( InstanceBindingFlag )
1952
1963
. Any ( fieldInfo => fieldInfo . Name . Equals ( varFuncName , StringComparisonForCasing ) ) == true )
1953
1964
{
1954
1965
if ( inObject && ( stack . Count == 0 || stack . Peek ( ) is ExpressionOperator ) )
0 commit comments