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

2024-01-11

我在 Xamarin Studio 中有一个 Android 应用程序。 我想执行文本(字符串)中放置的代码。 例如this https://stackoverflow.com/questions/4181668/execute-c-sharp-code-at-runtime-from-code-file问题在 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("<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();
    }
}

情况很复杂http://developer.xamarin.com/guides/android/advanced_topics/limitations/ 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 Support and Limited Java Generation Support您可以详细了解具体不支持的内容。这意味着您可能能够计算出某些代码,但它不适用于任何有效的 C# 代码。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 Xamarin Android 中运行时执行 C# 代码? 的相关文章

  • C++ OpenSSL 导出私钥

    到目前为止 我成功地使用了 SSL 但遇到了令人困惑的障碍 我生成了 RSA 密钥对 之前使用 PEM write bio RSAPrivateKey 来导出它们 然而 手册页声称该格式已经过时 实际上它看起来与通常的 PEM 格式不同 相
  • 带动态元素的 WPF 启动屏幕。如何?

    我是 WPF 新手 我需要一些帮助 我有一个加载缓慢的 WPF 应用程序 因此我显示启动屏幕作为权宜之计 但是 我希望能够在每次运行时更改屏幕 并在文本区域中显示不同的引言 这是一个生产力应用程序 所以我将使用非愚蠢但激励性的引言 当然 如
  • WCF 中 SOAP 消息的数字签名

    我在 4 0 中有一个 WCF 服务 我需要向 SOAP 响应添加数字签名 我不太确定实际上应该如何完成 我相信响应应该类似于下面的链接中显示的内容 https spaces internet2 edu display ISWG Signe
  • 显示UnityWebRequest的进度

    我正在尝试使用下载 assetbundle统一网络请求 https docs unity3d com ScriptReference Networking UnityWebRequest GetAssetBundle html并显示进度 根
  • SolrNet连接说明

    为什么 SolrNet 连接的容器保持静态 这是一个非常大的错误 因为当我们在应用程序中向应用程序发送异步请求时 SolrNet 会表现异常 在 SolrNet 中如何避免这个问题 class P static void M string
  • 如何在整个 ASP .NET MVC 应用程序中需要授权

    我创建的应用程序中 除了启用登录的操作之外的每个操作都应该超出未登录用户的限制 我应该添加 Authorize 每个班级标题前的注释 像这儿 namespace WebApplication2 Controllers Authorize p
  • Android访问远程SQL数据库

    我可以直接从 Android 程序访问远程 SQL 数据库 在网络服务器上 吗 即简单地打开包含所有必需参数的连接 然后执行 SQL 查询 这是一个私人程序 不对公众开放 仅在指定的手机上可用 因此我不担心第三方获得数据库访问权限 如果是这
  • 什么时候虚拟继承是一个好的设计? [复制]

    这个问题在这里已经有答案了 EDIT3 请务必在回答之前清楚地了解我要问的内容 有 EDIT2 和很多评论 有 或曾经 有很多答案清楚地表明了对问题的误解 我知道这也是我的错 对此感到抱歉 嗨 我查看了有关虚拟继承的问题 class B p
  • Android 中麦克风的后台访问

    是否可以通过 Android 手机上的后台应用程序 服务 持续监控麦克风 我想做的一些想法 不断聆听背景中的声音信号 收到 有趣的 音频信号后 执行一些网络操作 如果前台应用程序需要的话 后台应用程序必须能够智能地放弃对麦克风的访问 除非可
  • Android 套接字和 asynctask

    我即将开始制作一个应该充当 tcp 聊天客户端的应用程序 我一直在阅读和阅读 我得出的结论是最好 如果不需要 将我的套接字和异步任务中的阅读器 问题是我不确定从哪里开始 因为我是 Android 新手 这至少对我来说是一项艰巨的任务 但据我
  • 向现有 TCP 和 UDP 代码添加 SSL 支持?

    这是我的问题 现在我有一个 Linux 服务器应用程序 使用 C gcc 编写 它与 Windows C 客户端应用程序 Visual Studio 9 Qt 4 5 进行通信 是什么very在不完全破坏现有协议的情况下向双方添加 SSL
  • 为什么编译时浮点计算可能不会得到与运行时计算相同的结果?

    In the speaker mentioned Compile time floating point calculations might not have the same results as runtime calculation
  • C# 成员变量继承

    我对 C 有点陌生 但我在编程方面有相当广泛的背景 我想做的事情 为游戏定义不同的 MapTiles 我已经像这样定义了 MapTile 基类 public class MapTile public Texture2D texture pu
  • 测试用例执行完成后,无论是否通过,如何将测试用例结果保存在变量中?

    我正在使用 NUNIT 在 Visual Studio 中使用 Selenium WebDriver 测试用例的代码是 我想在执行测试用例后立即在变量中记录测试用例通过或失败的情况 我怎样才能实现这一点 NUnit 假设您使用 NUnit
  • IEnumreable 动态和 lambda

    我想在 a 上使用 lambda 表达式IEnumerable
  • android sdk 的位置尚未在 Windows 操作系统的首选项中设置

    在 Eclipse 上 我转到 windows gt Android SDK 和 AVD Manager 然后弹出此消息 Android sdk 的位置尚未在首选项中设置 进入首选项 在侧边栏找到 Android 然后会出现一个 SDK 位
  • 如何将服务器服务连接到 Dynamics Online

    我正在修改内部管理应用程序以连接到我们的在线托管 Dynamics 2016 实例 根据一些在线教程 我一直在使用OrganizationServiceProxy out of Microsoft Xrm Sdk Client来自 SDK
  • Windows 和 Linux 上的线程

    我在互联网上看到过在 Windows 上使用 C 制作多线程应用程序的教程 以及在 Linux 上执行相同操作的其他教程 但不能同时用于两者 是否存在即使在 Linux 或 Windows 上编译也能工作的函数 您需要使用一个包含两者的实现
  • C++ 中类级 new 删除运算符的线程安全

    我在我的一门课程中重新实现了新 删除运算符 现在我正在使我的代码成为多线程 并想了解这些运算符是否也需要线程安全 我在某处读到 Visual Studio 中默认的 new delete 运算符是线程安全的 但这对于我的类的自定义 new
  • 对来自流读取器的过滤数据执行小计

    编辑问题未得到解答 我有一个基于 1 个标准的过滤输出 前 3 个数字是 110 210 或 310 给出 3 个不同的组 从流阅读器控制台 问题已编辑 因为第一个答案是我给出的具体示例的字面解决方案 我使用的实际字符串长度为 450 个

随机推荐

  • 仅具有底部边框的输入文本字段

    如何设置文本样式input字段使其只有一个border bottom像这个 预期文本Input Field Use outline 0然后设置border bottom input outline 0 border width 0 0 2p
  • Pandas 变换方法执行缓慢

    我有一个规范的熊猫transform性能似乎莫名其妙地缓慢的示例 我已阅读问答apply method https stackoverflow com questions 54432583 when should i ever want t
  • 从 Fragment 调用 DialogFragment

    我正在尝试从 Fragment 类中调用 DialogFragment 我有一个 ImageView 并且想在我设置的 ImageView 的 onClickListener 中调用我的 DialogFragment 类 我在 onClic
  • 如何使用CGAffineTransform MakeRotation?

    我想使用 Quartz 2D 绘制文本 菜单 方向错误 我希望 菜单 仍然可读并且与 X 轴成 45 度 下面是我的代码 CGContextSelectFont context Arial 12 kCGEncodingMacRoman CG
  • 如何将 YAML 文件解析/读取为 Python 对象?

    如何将 YAML 文件解析 读取为 Python 对象 例如 这个 YAML Person name XYZ 对于这个 Python 类 class Person yaml YAMLObject yaml tag Person def in
  • 如何让jquery移动控件组宽度为100%?

    我正在使用 jquery mobile 来做演示 我想让本地导航的宽度为 100 但我不知道该怎么做 代码在这里 ul class localnav li a href class ui btn active 111 a li li a h
  • 避免重复

    如何避免字符串中的重复项 在 C 中 例如 我有 a a b b c 我想得到像 a b c 这样的答案 通过使用HashSet
  • 为所有用户安装可选的桌面快捷方式

    我想做一个wix安装程序 带有optional所有用户的桌面快捷方式 可选的意思 我不能把它放在component主exe的 但在一个单独的component 这样我就可以设置一个单独的feature为快捷方式 当这样做时 wix 抱怨道
  • 避免注册表 php 中的 SQL 注入

    我的本地主机上有一个简单的注册表单 仍在测试 我想知道它是否会受到 SQL 注入攻击 Code name mysql real escape string POST name password mysql real escape strin
  • 如何在 Blazor 服务器应用程序中以编程方式注销(身份)

    在我的代码中 我处理 DbUpdateConcurrencyException 对于更新用户帐户的情况 并且用户不再存在 我想将他们注销 因为他们不再是有效用户 当然 这不是什么大问题 因为这种情况应该很少见 他们尝试访问的任何页面都不会接
  • 价值的存在量化

    我在 Scala 语言中遇到了对值的存在量化 规范 3 2 10 存在类型 x y Inner forSome val y Outer 有人有说明性的用例吗 T forSome val x S 定义为T forSome type t lt
  • docker 中的“/bin/sh: 1: [“apache2ctl”,: 未找到”

    我有一个简单的 Dockerfile FROM ubuntu RUN apt get update RUN apt get install y apache2 RUN apt get install y apache2 utils RUN
  • 你怎么解决? formattastic :label_method 不再可用

    好的 我是 ruby rails 新手 因此 为了弥补我的弱点 我的公司请了一个人来帮助我创建我们网站的骨架 他输入了 formattastic label method 这样我们就可以更改 DDLB 中显示的字段 当我将项目移动到新盒子时
  • IsMobileDevice 如何工作?

    MSDN http msdn microsoft com en us library fhhycabe aspx听起来很容易检测移动浏览器 if Request Browser IsMobileDevice true Response Re
  • VBA仅对文本进行排序,忽略带有公式的单元格

    我有一张非常大的工作表 约有 150 列 其中大部分包含公式 当我想对输入到不使用公式的单元格的数据进行排序时 它会弄乱整个工作表 输入单元格不在一起 目前 我在 VBA 中的解决方案是将单元格复制到另一个 隐藏 工作表 排序并将其全部放回
  • 正确的 C# 命名空间用法是什么?

    我有 Java 背景 我看到很多人说命名空间 包 但环顾一下可用的代码 在我看来 人们使用命名空间的方式并不像使用包那样 目前 我正在开发一个 DLL 来管理对要在两个 Windows 应用程序之间共享的数据库的所有数据访问 到目前为止 我
  • Entity Framework Core 中的自引用/父子关系一对零或一对一

    我想在 Entity Framework Core 中创建一对零或一对一的引用 父子关系 我的意思是我的实体可以有一个父级 public class MyEntity public Guid Id get set public Guid P
  • 仅将 CSS 样式应用于嵌套列表根目录中的第一个
  • 我只想在第一个li应用CSS但是 first child适用于每个 ul 的所有第一个子级 这是我的CODE http jsfiddle net jassi9911 w47LD menu navigation li first child
  • 我可以在哪里获得(相对较新的)稳定版本的 Dart 吗?

    因此 我将我正在参与的项目升级到 1 4 当然是在开发 测试分支 并遇到了一些问题 因此我们想再次使用 Dart 1 3 6 但是 我找不到这个 有谁知道哪里可以下载吗 我看过并主演过https code google com p dart
  • 如何在 Xamarin Android 中运行时执行 C# 代码?

    我在 Xamarin Studio 中有一个 Android 应用程序 我想执行文本 字符串 中放置的代码 例如this https stackoverflow com questions 4181668 execute c sharp c