如果我在没有EditHistory成员的情况下呈现我的模板,它可以运行。然而,当我添加那个在我的应用程序中的额外成员时,我会得到一个异常无法加载文件或程序集“Models,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = null”或其某个依赖项。系统找不到指定的文件。
Models是包含ContentModel、EditHistory和UserDetail的项目。
public class ContentModel
{
public string Html { get; set; }
public string Title { get; set; }
public EditHistory History { get; set; }
}
public class EditHistory
{
public IReadOnlyCollection<UserDetail> Authors { get; set; }
}
public class UserDetail
{
public string Name { get; set; }
public string EmailAddress { get; set; }
}
我正在使用RazorDynamicObject将ContentModel包装起来,代码如下:
Razor.Run("default.cshtml", typeof(ContentModel), RazorDynamicObject.Create(cm));
如上所述,在没有EditHistory的情况下它可以工作,但有时会失败。
沙箱设置与https://antaris.github.io/RazorEngine/Isolation.html如出一辙。
我该如何处理复杂的自定义类型才能使其正常工作?
运行环境为ASP.NET。
编辑
我已经创建了一个最小化的问题重现示例,位于https://github.com/knightmeister/RazorEngineIssue。如果恢复程序包失败,请手动执行install-package razorengine
。
public EditHistory History {get;set;}
替换为public IReadOnlyCollection<UserDetail> History {get;set;}
,或者用简单类型public IReadOnlyCollection<string> History {get;set;}
进行相同的测试,会发生什么情况?只读集合有可能是问题吗?如果使用IList
或IEnumerable
会怎样呢?结果相同吗? - Tommy