0

Is there anything I can do to make this code work?

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Mono.CSharp;

namespace MonoREPLTester
    {
    public class Program
        {
        static void Main(string[] args)
            {
            var evaluator = new Evaluator(new CompilerContext(new CompilerSettings(), new ConsoleReportPrinter()));        
            string mystring="hello";
            object result = evaluator.Run("mystring.IndexOf('e');");
            Console.WriteLine("Result: "+result);
            Console.WriteLine("Press any key to exit.");
            Console.ReadKey();
            }
        }
    }

I currently get a warning because the Mono context doesn't have know about mystring.

"error CS0103: The name 'mystring' does not exist in the current context"

4

1 回答 1

1

您需要将其设为静态的类级变量:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Mono.CSharp;
using System.Reflection;

namespace MonoREPLTester
    {
    public class Program
        {
        public static string mystring = "hello";
        static void Main(string[] args)
            {
            var evaluator = new Evaluator(new CompilerContext(new CompilerSettings(), new ConsoleReportPrinter()));
            evaluator.ReferenceAssembly(Assembly.GetExecutingAssembly());
            evaluator.Run("using MonoREPLTester;");
            object result = evaluator.Evaluate("Program.mystring.IndexOf('l');");
            Console.WriteLine("Result: " + result);
            Console.WriteLine("Press any key to exit.");
            Console.ReadKey();
            }
        }
    }
于 2013-08-09T14:31:30.673 回答