如何在Xamarin Android中运行时执行C#代码?

我在Xamarin Studio中有一个Android应用程序。 我想执行文本中的代码(字符串)。 例如, 这个问题在Visual Studio Windows应用程序中帮助我。 但是我不能在Xamarin Android中使用这个答案。 这是我在C#Windows应用程序中的示例:

public class CodeLuncher { public static void LunchCSCode(string site, string typeName, string methosName) { try { var provider = CSharpCodeProvider.CreateProvider("c#"); var options = new CompilerParameters(); string text = new System.Net.WebClient().DownloadString(site); foreach (var item in GetRefrences(text)) { options.ReferencedAssemblies.Add(item); } string code = GetCode(text); var results = provider.CompileAssemblyFromSource(options, new[] { code }); if (results.Errors.Count > 0) { foreach (var error in results.Errors) { Console.WriteLine(error); } } else { var t = results.CompiledAssembly.GetType(typeName); t.GetMethod(methosName).Invoke(null, null); } } catch { } } static string[] GetRefrences(string text) { Regex regExp = new Regex("(.*?)", RegexOptions.Multiline | RegexOptions.IgnorePatternWhitespace | RegexOptions.Singleline); string str = regExp.Match(text).Groups[1].Value; List retText = new List(); foreach (var item in str.Trim().Split(new string[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries)) { retText.Add(item); } return retText.ToArray(); } static string GetCode(string text) { Regex regExp = new Regex("(.*?)", RegexOptions.Multiline | RegexOptions.IgnorePatternWhitespace | RegexOptions.Singleline); string str = regExp.Match(text).Groups[1].Value; return str.Trim(); } } 

这很复杂http://developer.xamarin.com/guides/android/advanced_topics/limitations/

Since applications on Android require generating Java proxy types during the build process, it is not possible to generate all code at runtime.

Limited Dynamic Language SupportLimited Java Generation Support您可以了解有关具体不受支持的内容。 这意味着您可能能够计算出某些代码,但它不适用于任何有效的c#代码。