知道 RazorEngine 中的特定模板是否已经编译

Kar*_*sar 5 c# razor razor-2

是否可以知道特定模板是否已使用 RazorEngine 编译?基本上,如果你打电话:

Razor.Parse("Hello there @Model.Name", model, "hello-world");
Run Code Online (Sandbox Code Playgroud)

这将使用键“hello-world”编译模板。第一次这可能需要几毫秒,但由于缓存,第二次几乎是即时的。是否可以知道模板是否已经编译?就像是:

var isCompiled = Razor.IsCompiled("Hello there @Model.Name", "hello-world");
Run Code Online (Sandbox Code Playgroud)

Mat*_*ott 3

RazorEngine v3.2.0 包含一个ITemplateService.HasTemplate用于检查缓存的方法,但该方法在静态类型上不存在Razor,因此要使用它,您需要手动实例化和维护实例TemplateService

您真的需要知道它们是否已经被缓存吗?我问这个问题是因为我们在开始解析模板之前,无论何时调用ITemplateService.Parse( Razor.Parse),都会考虑缓存。