c# - RazorEngine.RunCompile() 如何在幕后工作?
问题描述
我的问题是它如何C#
在HTML
string path = string.Format("{0}\\Templates\\RazorExample.cshtml", Directory.GetCurrentDirectory());
string template = System.Text.Encoding.UTF8.GetString(System.IO.File.ReadAllBytes(path));
string returnedView = Engine.Razor.RunCompile(template, "report", typeof(ViewModels.ReportViewModel), reportViewModel, null);
File.WriteAllText(fileName, returnedView);
解决方案
这非常简短,但应该有所帮助。当一切都配置为调试时,您可以通过添加编译错误来查看最终代码(错误应该指向生成的 c# 文件)。通过这个技巧,您应该了解引擎是如何工作的,您还可以尝试使用几个功能并查看代码的外观:
- 基本上,所有标记都转换为 Stream.WriteLine 调用。
- C# 代码不变(这基本上是你的问题)
- 代码已编译
- 程序集已加载
- 方法被执行
这就是编译成本高而执行成本低的原因。因为最终“执行”只是一个方法调用。
所以答案是:你的 c# 是用常规的 c# 编译器编译的,没有魔法。
推荐阅读
- java - 为什么 nextLine() 跳过第一个输入但没有其他输入?
- python - 枕头 - 如何用阈值对图像进行二值化?
- azure-devops - 使用 DotNetCLI 测试任务和 cobertura 工具收集、转换和发布覆盖率时如何在 azure DevOps 中获得 PR 差异覆盖率
- javascript - 我无法让透视相机跟随玩家。相机卡在世界原点
- easyadmin3 - EasyAdmin 3 如何根据查询从操作 createEntity 设置关联
- android - Android:如何创建这样的滑动底部导航栏?
- python - 如何使用 iat 将元组分配给单元格?
- asp.net-web-api - Microsoft 身份和基于令牌的 web-api 授权的最佳实践
- python - 我的 Plotly 动画图表说“名称”属性是一个字符串,必须指定为字符串
- r - 如何使用函数分析所有小标题中的所有行,将我的数据放在小标题列表中?