@@ -54,49 +54,33 @@ protected override Expression VisitLambda<T>(Expression<T> node)
5454 {
5555 OldParameters = node . Parameters ;
5656 _parameters = VisitAndConvert < ParameterExpression > ( node . Parameters , "VisitLambda" ) ;
57+ List < ParameterExpression > parameters = _parameters . ToList < ParameterExpression > ( ) ;
5758 int _parametersCount = _parameters . Count ( ) ;
5859
59- switch ( _parameters . Count ( ) )
60+ //Up to make 1-Parameters lambda
61+ if ( _parametersCount == 0 )
6062 {
61- case 0 :
62- GloCla . Tracer ? . TraceEvent ( TraceEventType . Warning , 118 , GloCla . ResMan . GetString ( "W8" ) ) ;
63-
64- List < ParameterExpression > parameters0 = new List < ParameterExpression > ( ) ;
65- parameters0 . Add ( Expression . Parameter ( typeof ( ThumbnailObject ) , GloCla . EmptyName + "1" ) ) ;
66- parameters0 . Add ( Expression . Parameter ( typeof ( ThumbnailObject ) , GloCla . EmptyName + "2" ) ) ;
67- parameters0 . Add ( Expression . Parameter ( typeof ( ThumbnailObject ) , GloCla . EmptyName + "3" ) ) ;
68- _parameters = parameters0 . AsReadOnly ( ) ;
69-
70- break ;
71-
72- //nake 3-Parameters lambda from 1-Param lambda
73- case 1 :
74- List < ParameterExpression > parameters1 = _parameters . ToList < ParameterExpression > ( ) ;
75- parameters1 . Add ( Expression . Parameter ( typeof ( ThumbnailObject ) , GloCla . EmptyName + "2" ) ) ;
76- parameters1 . Add ( Expression . Parameter ( typeof ( ThumbnailObject ) , GloCla . EmptyName + "3" ) ) ;
77- _parameters = parameters1 . AsReadOnly ( ) ;
78-
79- break ;
80-
81- //nake 3-Parameters lambda from 2-Param lambda
82- case 2 :
83- List < ParameterExpression > parameters2 = _parameters . ToList < ParameterExpression > ( ) ;
84- parameters2 . Add ( Expression . Parameter ( typeof ( ThumbnailObject ) , GloCla . EmptyName + "3" ) ) ;
85- _parameters = parameters2 . AsReadOnly ( ) ;
86-
87- break ;
88-
89- //do nothing it's max
90- case 3 :
91- break ;
92-
93- //It's bad
94- default :
95- string ExceptionMess = String . Format ( GloCla . ResMan . GetString ( "E33" ) ) ;
96- GloCla . Tracer ? . TraceEvent ( TraceEventType . Error , 119 , ExceptionMess ) ;
97- throw new Exception ( ExceptionMess ) ;
63+ GloCla . Tracer ? . TraceEvent ( TraceEventType . Warning , 118 , GloCla . ResMan . GetString ( "W8" ) ) ;
64+ parameters . Add ( Expression . Parameter ( typeof ( ThumbnailObject ) , GloCla . EmptyName + "1" ) ) ;
9865 }
9966
67+ //Up to make 2-Parameters lambda
68+ if ( _parametersCount < 2 )
69+ parameters . Add ( Expression . Parameter ( typeof ( ThumbnailObject ) , GloCla . EmptyName + "2" ) ) ;
70+
71+ //Up to make 3-Parameters lambda
72+ if ( _parametersCount < 3 )
73+ parameters . Add ( Expression . Parameter ( typeof ( ThumbnailObject ) , GloCla . EmptyName + "3" ) ) ;
74+
75+ //To many Parameters. It's bad
76+ if ( _parametersCount > 3 )
77+ {
78+ string ExceptionMess = String . Format ( GloCla . ResMan . GetString ( "E33" ) ) ;
79+ GloCla . Tracer ? . TraceEvent ( TraceEventType . Error , 119 , ExceptionMess ) ;
80+ throw new Exception ( ExceptionMess ) ;
81+ }
82+
83+ _parameters = parameters . AsReadOnly ( ) ;
10084 Expression PrecoLambdaBody = Visit ( node . Body ) ;
10185 ModifeidLambda = Expression . Lambda < Func < ThumbnailObject , ThumbnailObject , ThumbnailObject , bool > > ( PrecoLambdaBody , _parameters ) ;
10286
@@ -151,7 +135,7 @@ protected override Expression VisitMember(MemberExpression node)
151135 //intersect
152136 SingleTypeOfDomein ParameterModel = allTypes . Where ( t => t . Type == node . Expression . Type ) . First ( ) ;
153137
154- if ( ParameterModel is null )
138+ if ( ParameterModel is null )
155139 {
156140 throw new Exception ( ) ;
157141 }
@@ -187,13 +171,34 @@ protected override Expression VisitMember(MemberExpression node)
187171 Expression PrecursorAccessExpression = Expression . MakeMemberAccess ( newParam , PrecursorPropertyInfo ) ;
188172 IndexAccessExpr = Expression . MakeIndex ( PrecursorAccessExpression , TO_indekser , argument ) ;
189173 }
190-
174+
191175 //Convert above expression from ValueType to particular type of frontal value
192176 return Expression . Convert ( IndexAccessExpr , node . Type ) ;
193177 }
194178
195179 protected override Expression VisitMethodCall ( MethodCallExpression node )
196180 {
181+ if ( node . Method . IsStatic )
182+ {
183+ string MethodName = node . Method . Name ;
184+
185+ if ( ! node . Arguments . Any ( ) )
186+ {
187+ string WarningArgMess = String . Format ( GloCla . ResMan . GetString ( "W17" ) , MethodName ) ;
188+ GloCla . Tracer ? . TraceEvent ( TraceEventType . Warning , 148 , WarningArgMess ) ;
189+ }
190+
191+ if ( node . Method . ReturnType == typeof ( void ) )
192+ {
193+ string WarningRetMess = String . Format ( GloCla . ResMan . GetString ( "W18" ) , MethodName ) ;
194+ GloCla . Tracer ? . TraceEvent ( TraceEventType . Warning , 149 , WarningRetMess ) ;
195+ }
196+
197+ ReadOnlyCollection < Expression > ChangedArguments = Visit ( node . Arguments ) ;
198+ MethodCallExpression ChangedMethod = Expression . Call ( node . Method , ChangedArguments ) ;
199+ return ChangedMethod ;
200+ }
201+
197202 string ExceptionMess = String . Format ( GloCla . ResMan . GetString ( "C39" ) , node . ToString ( ) ) ;
198203 GloCla . Tracer ? . TraceEvent ( TraceEventType . Critical , 121 , ExceptionMess ) ;
199204 throw new Exception ( ExceptionMess ) ;
0 commit comments