将字符串转换为代码隐藏中的可执行 C# 代码[重复]

2024-04-03

可能的重复:
在 C# 4.0 中执行字符串 https://stackoverflow.com/questions/760088/execute-a-string-in-c-sharp-4-0

我怎样才能让这个字符串执行:

string dt = "DateTime.Now";

...这样就会显示今天的日期?:

lbl.Text = dt;

Codedom 的解决方案:

private static string CreateExecuteMethodTemplate(string content)
{
    var builder = new StringBuilder();

    builder.Append("using System;");
    builder.Append("\r\nnamespace Lab");
    builder.Append("\r\n{");
    builder.Append("\r\npublic sealed class Cal");
    builder.Append("\r\n{");
    builder.Append("\r\npublic static object Execute()");
    builder.Append("\r\n{");
    builder.AppendFormat("\r\nreturn {0};", content);
    builder.Append("\r\n}");
    builder.Append("\r\n}");
    builder.Append("\r\n}");

    return builder.ToString();
}

private static object Execute(string content)
{
    var codeProvider = new CSharpCodeProvider();
    var compilerParameters = new CompilerParameters
    {
        GenerateExecutable = false,
        GenerateInMemory = true
    };

    compilerParameters.ReferencedAssemblies.Add("system.dll");

    string sourceCode = CreateExecuteMethodTemplate(content);
    CompilerResults compilerResults = codeProvider.CompileAssemblyFromSource(compilerParameters, sourceCode);
    Assembly assembly = compilerResults.CompiledAssembly;
    Type type = assembly.GetType("Lab.Cal");
    MethodInfo methodInfo = type.GetMethod("Execute");

    return methodInfo.Invoke(null, null);
}

所以你可以打电话:

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

将字符串转换为代码隐藏中的可执行 C# 代码[重复] 的相关文章

随机推荐

  • 如何使用ggplot2从geom_tile(热图)中删除白线

    我无法去除热图中图块之间的白线 下面是我的代码和图片 以前有人遇到过这种情况吗 t lt ggplot Drug heatmap df final aes x reorder Drug Total Deaths y Start Date f
  • 分配内存的嵌套结构

    gcc c89 我在这一行得到堆栈转储 strcpy comp gt persons gt name Joe 但是 我已经分配了内存 所以不确定为什么我会得到它 我在这里错过了什么吗 非常感谢您的任何建议 include
  • 将 WooCommerce 订单项自定义字段总和保存为新元数据

    当在此 WooCommerce 商店中订购特定产品时 两个元值将添加到订单中 存储元值的两个字段位于wp woocommerce order itemmeta 元键是 quantity assemblycost 我想在下新订单时以编程方式创
  • 从字符串 Django 模板中删除第一个字符

    我知道这个问题已经被问过多次 但每个人都达到的解决方案 和文档 似乎并不适合我 尝试删除第一个字符 Code is picture picture path slice 1 但结果仍然是 DOF mrD5T49 jpg 试图获得前导点 我是
  • ActiveMQ:如何以编程方式监控嵌入式代理

    我想从代码内部监控嵌入式 ActiveMQ 5 8 代理 如何才能做到这一点 我需要 JMX 连接吗 我想防止暴露 JMX 有没有办法访问org apache activemq broker jmx http activemq apache
  • 在一个请求中创建多个项目的 RESTful 方式

    我正在开发一个小型客户端服务器程序来收集订单 我想以 REST ful 方式 来做到这一点 我想做的是 收集所有订单行 产品和数量 并将完整订单发送到服务器 目前我看到有两种选择可以做到这一点 将每个订单行发送到服务器 POST qty 和
  • 在 AngularJS 中使用逗号作为列表分隔符

    我需要创建一个以逗号分隔的项目列表 li b email last b li 根据 AngularJS 文档 表达式中不允许使用控制流语句 这就是为什么我的 last 不起作用 是否有其他方法来创建逗号分隔的列表 EDIT 1有没有比以下更
  • SQLite 并插入 UTC 格式的当前日期

    如何在 sqlite 数据库上使用 SQL 语句插入 UTC 格式的当前日期 我找到了NOW函数 但它的格式是什么 这将在移动设备上进行 因此每个人都会有不同的区域设置 但是 我需要标准时间格式 因为设备会将日期与我的服务器进行比较 另外
  • Python - DM 用户 Discord 机器人

    我正在 Python 中开发一个 User Discord 机器人 如果机器人所有者输入 DM user然后机器人会私信所有者提到的用户 client event async def on message message if messag
  • 是否可以在同一个 html 页面中多次使用相对位置?

    我在主页上使用 相对位置 和 绝对位置 我有一个使用上述母版页的页面 并且我尝试在此页面中再次对其他 2 个元素使用 相对位置 和 绝对位置 但该页面中下面的元素 绝对位置 是不是根据其上方的元素放置的 相对位置 而是指母版页中元素的 相对
  • 如何在 JavaFX 中将 GUI 覆盖到 3D 场景上?

    我在 JavaFX 中有一个 3D 场景 需要在 3D 场景上覆盖 GUI 我尝试向场景添加按钮和文本 但它们始终作为 3D 对象出现在 3D 视图中 我环顾四周 没有找到该怎么做 唯一的解决方法是创建一个全新的窗口并将设置放在那里 但在这
  • Android Facebook - 获取空个人资料

    第一次使用 Facebook SDK 我无法获取用户个人资料 它始终为空 怎么了 btnFbWidget LoginButton findViewById R id btnFbWidget btnFbWidget setReadPermis
  • 删除indexedDB对象存储中特定索引值的所有记录

    对于数组键为的对象存储 a b where a也是一个索引 有没有更有效的方法来删除特定值的所有记录a而不是在索引上打开游标a并通过光标逐步删除每条记录 有没有办法只为索引定义键范围 或者只为索引定义键范围a然后离开b打开任何值 以便可以删
  • 如何在 AngularJS 和 Jasmine 中对 $http 进行单元测试

    这是我的代码 因为代码很长 所以我做了一个 Plunker describe create function it Should be defined function expect BaseService create toBeDefin
  • 导入特定于版本的 python 模块的最佳方法

    对于在特定于版本的 python 中导入模块 哪种方法最有意义 我的用例是 我正在编写将部署到 python 2 3 环境中的代码 并在几个月内升级到 python 2 5 这 if sys version info 2 gt 2 5 fr
  • 复制到剪贴板需要花费大量时间

    我有以下代码将 25MB 的数据复制到剪贴板 star time after populating HTML and Text const start time new Date getTime navigator clipboard wr
  • Applescript 将启动 Chrome(具体内容)

    我真的很难创建一些在 osx 上启动浏览器窗口 chrome 的方法 具体细节包括窗口大小 没有选项卡等 传统上 我通过带有 IE 的窗口使用 vb 脚本 这是一个非常简单的练习 但我 我将是第一个承认的人 当谈到 Mac 时 我感到非常挣
  • Rails 3 ActiveRecord .skip_callback 线程安全

    这段代码线程安全吗 MyModel skip callback save before my callback my model instance update attributes attributes MyModel set callb
  • 错误:(9, 5) 错误:找不到资源 android:attr/dialogCornerRadius

    所以我安装了 android studio 3 0 1 一旦打开构建的 gradle 并显示以下错误 我尝试添加设计和支持等依赖项 但徒劳无功 有人可以帮助我吗 它显示了一些属性 例如dialogCornerRadius and fontV
  • 将字符串转换为代码隐藏中的可执行 C# 代码[重复]

    这个问题在这里已经有答案了 可能的重复 在 C 4 0 中执行字符串 https stackoverflow com questions 760088 execute a string in c sharp 4 0 我怎样才能让这个字符串执