gpt4 book ai didi

c# - 将字符串作为 C# 代码运行的最佳方式

转载 作者:行者123 更新时间:2023-12-02 04:37:38 24 4
gpt4 key购买 nike

假设我有:

@{
var str= "DateTime.Now";
}

我想把这个字符串作为c#代码处理

@Html.Raw(App.ProcessAsCode(str));

输出应该是当前日期时间。

最佳答案

最终编辑:

根据更多信息 - 如果这里的目标只是拥有一个格式化引擎,那么有很多选择。其中一个选项基于 shopify ( see here) 中的 .liquid 语法。您可以在此处的 gitHub 上找到它的 .NET 端口:https://github.com/formosatek/dotliquid/ .这样做的主要目的是变成类似这样的东西:

 <h2>{{product.name}}</h2>

变成这样的东西:

 <h2>Beef Jerky</h2>

我强烈建议您阅读更多有关液体引擎和语法的内容,我相信这会引导您朝着正确的方向前进。祝你好运!


初始答案

这绝对是可能的——尽管正如其他人所说,您在做事时要小心。使用 C# 编译和运行代码的关键一般是“CSharpCodeProvider”类。这是一个简短的示例:

        string[] references = { "System.dll" };
CompilerParams.ReferencedAssemblies.AddRange(references);

var provider = new CSharpCodeProvider();
CompilerResults compile = provider.CompileAssemblyFromSource(CompilerParams, formattedCode);

在此示例中,“formattedCode”是一个带有 C# 代码的字符串。必须手动添加任何引用。有关完整示例,请参阅此堆栈问题 (How to get a Type from a C# type name string?)。

注意 -- 如果您在这里要做的只是格式字符串或类似的简单内容,您可能会让用户传入 .NET 格式字符串(例如“MM/dd/yyyy "),然后在调用“ToString”方法时使用它。这将为用户提供一些可配置性,同时仍确保您的系统保持安全。一般来说,在没有正确检查/转义的服务器上运行代码是非常危险的!

引用 - 供您引用,current msdn page对于 CSharpCodeProvider 也有一些例子。

关于c# - 将字符串作为 C# 代码运行的最佳方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21616448/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com