@@ -13,51 +13,42 @@ public class RoslynReplEngine : RoslynScriptEngine, IReplEngine
1313 {
1414 public RoslynReplEngine ( IScriptHostFactory scriptHostFactory , ILog logger ) : base ( scriptHostFactory , logger )
1515 {
16- LocalVariables = new Collection < string > ( ) ;
1716 }
1817
19- public ICollection < string > LocalVariables { get ; private set ; }
20-
21- protected override ScriptResult Execute ( string code , Session session )
18+ public ICollection < string > LocalVariables
2219 {
23- Guard . AgainstNullArgument ( "session" , session ) ;
24-
25- if ( string . IsNullOrWhiteSpace ( FileName ) && ! IsCompleteSubmission ( code ) )
26- {
27- return ScriptResult . Incomplete ;
28- }
29-
30- try
20+ get
3121 {
32- var submission = session . CompileSubmission < object > ( code ) ;
22+ var submissionObjectField = Session . GetType ( ) . GetField ( "submissions" , BindingFlags . Instance | BindingFlags . NonPublic ) ;
23+ var submissionObjects = ( submissionObjectField . GetValue ( Session ) as object [ ] ) . Where ( x => x != null ) ;
24+ var variables = new Collection < string > ( ) ;
3325
34- try
26+ if ( submissionObjects . Any ( ) )
3527 {
36- var result = submission . Execute ( ) ;
37-
38- var submissionObjectField = session . GetType ( ) . GetField ( "submissions" , BindingFlags . Instance | BindingFlags . NonPublic ) ;
39- var submissionObject = ( submissionObjectField . GetValue ( session ) as object [ ] ) . LastOrDefault ( x => x != null ) ;
40-
41- if ( submissionObject != null )
28+ foreach ( var submissionObject in submissionObjects )
4229 {
4330 var fields = submissionObject . GetType ( ) . GetFields ( ) . Where ( x => x . Name . ToLowerInvariant ( ) != "<host-object>" ) ;
4431 foreach ( var field in fields )
4532 {
46- LocalVariables . Add ( string . Format ( "{0} {1} = {2}" , field . FieldType , field . Name , field . GetValue ( submissionObject ) ) ) ;
47- }
33+ variables . Add ( string . Format ( "{0} {1} = {2}" , field . FieldType , field . Name , field . GetValue ( submissionObject ) ) ) ;
34+ }
4835 }
49-
50- return new ScriptResult ( returnValue : result ) ;
51- }
52- catch ( Exception ex )
53- {
54- return new ScriptResult ( executionException : ex ) ;
5536 }
37+
38+ return variables ;
5639 }
57- catch ( Exception ex )
40+ }
41+
42+ protected override ScriptResult Execute ( string code , Session session )
43+ {
44+ Guard . AgainstNullArgument ( "session" , session ) ;
45+
46+ if ( string . IsNullOrWhiteSpace ( FileName ) && ! IsCompleteSubmission ( code ) )
5847 {
59- return new ScriptResult ( compilationException : ex ) ;
48+ return ScriptResult . Incomplete ;
6049 }
50+
51+ return base . Execute ( code , session ) ;
6152 }
6253 }
6354}
0 commit comments