I have a android application in Xamarin Studio. I want to execute a code placed in the text (string). For example this question help me in Visual Studio Windows application. But I cannot use this answer in Xamarin Android. This is my example in C# Windows application:
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("<Refrences>(.*?)</Refrences>", RegexOptions.Multiline | RegexOptions.IgnorePatternWhitespace | RegexOptions.Singleline);
string str = regExp.Match(text).Groups[1].Value;
List<string> retText = new List<string>();
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("<CSharpCode>(.*?)</CSharpCode>", RegexOptions.Multiline | RegexOptions.IgnorePatternWhitespace | RegexOptions.Singleline);
string str = regExp.Match(text).Groups[1].Value;
return str.Trim();
}
}