无法使用查找助手编译模板 - 签名或安全透明度不兼容
Cannot compile template with Lookup helper - signature or security transparency is not compatible
我正在尝试在使用 .NET Core 2.1 和 Handlebars.Net 1.9.5
的控制台应用程序中使用以下模板 (TestTemplate)
<html>
<head>
<title>A title</title>
</head>
<body>
{{ > (lookup TemplateName)}}
</body>
</html>
因此带有 {{ > (lookup TemplateName)}} 的行给我带来了问题。
想法是使用部分名称,稍后将通过传递 TemplateName 变量解析部分名称。
但是,当我尝试使用
编译模板时
var foo = Resource1.TestTemplate;
Handlebars.Compile(Encoding.UTF8.GetString(foo));
我得到以下异常:
System.ArgumentException: 无法绑定到目标方法,因为它的签名或安全透明度与委托类型不兼容。
在 System.Reflection.RuntimeMethodInfo.CreateDelegateInternal(类型 delegateType,对象 firstArgument,DelegateBindingFlags bindingFlags)
在 HandlebarsDotNet.Compiler.SubExpressionVisitor.GetHelperDelegateFromMethodCallExpression(MethodCallExpression helperCall)
在 HandlebarsDotNet.Compiler.SubExpressionVisitor.VisitSubExpression(SubExpressionExpression subex)
在 System.Linq.Expressions.ExpressionVisitor.VisitUnary(一元表达式节点)
在 System.Linq.Expressions.UnaryExpression.Accept(ExpressionVisitor 访问者)
在 System.Dynamic.Utils.ExpressionVisitorUtils.VisitArguments(ExpressionVisitor 访问者,IArgumentProvider 节点)
在 System.Linq.Expressions.ExpressionVisitor.VisitMethodCall(MethodCallExpression 节点)
在 System.Linq.Expressions.MethodCallExpression.Accept(ExpressionVisitor 访问者)
在 System.Linq.Expressions.ExpressionVisitor.VisitUnary(一元表达式节点)
在 System.Linq.Expressions.UnaryExpression.Accept(ExpressionVisitor 访问者)
在 System.Linq.Expressions.ExpressionVisitor.VisitConditional(条件表达式节点)
在 System.Linq.Expressions.ConditionalExpression.Accept(ExpressionVisitor 访客)
在 System.Dynamic.Utils.ExpressionVisitorUtils.VisitBlockExpressions(ExpressionVisitor 访问者,BlockExpression 块)
在 System.Linq.Expressions.ExpressionVisitor.VisitBlock(BlockExpression 节点)
在 System.Linq.Expressions.BlockExpression.Accept(ExpressionVisitor 访客)
at HandlebarsDotNet.Compiler.FunctionBuilder.Compile(IEnumerable1 expressions, Expression parentContext, String templatePath) --- 内部异常堆栈跟踪结束 --- at HandlebarsDotNet.Compiler.FunctionBuilder.Compile(IEnumerable1 expressions, Expression parentContext, String templatePath)
at HandlebarsDotNet.Compiler.FunctionBuilder.Compile(IEnumerable1 expressions, String templatePath) --- 内部异常堆栈跟踪结束 --- at HandlebarsDotNet.Compiler.FunctionBuilder.Compile(IEnumerable1 expressions, String templatePath)
在 HandlebarsDotNet.Handlebars.HandlebarsEnvironment.Compile(字符串模板)
我希望有人有想法,因为我已经搜索了很长时间。
好吧,我完全错过了我正在查看 HandleBars.js 文档。
在 HandleBars.js 中,查找助手是内置的,但到目前为止,它还没有出现在 .net 版本中。
所以你必须自己声明查找助手,在我的例子中是这样的:
Handlebars.RegisterHelper("lookup", (output, context, arguments) => { output.WriteSafeString(arguments[0]); });
希望能帮到别人。
我正在尝试在使用 .NET Core 2.1 和 Handlebars.Net 1.9.5
的控制台应用程序中使用以下模板 (TestTemplate)<html>
<head>
<title>A title</title>
</head>
<body>
{{ > (lookup TemplateName)}}
</body>
</html>
因此带有 {{ > (lookup TemplateName)}} 的行给我带来了问题。
想法是使用部分名称,稍后将通过传递 TemplateName 变量解析部分名称。
但是,当我尝试使用
编译模板时var foo = Resource1.TestTemplate;
Handlebars.Compile(Encoding.UTF8.GetString(foo));
我得到以下异常:
System.ArgumentException: 无法绑定到目标方法,因为它的签名或安全透明度与委托类型不兼容。 在 System.Reflection.RuntimeMethodInfo.CreateDelegateInternal(类型 delegateType,对象 firstArgument,DelegateBindingFlags bindingFlags) 在 HandlebarsDotNet.Compiler.SubExpressionVisitor.GetHelperDelegateFromMethodCallExpression(MethodCallExpression helperCall) 在 HandlebarsDotNet.Compiler.SubExpressionVisitor.VisitSubExpression(SubExpressionExpression subex) 在 System.Linq.Expressions.ExpressionVisitor.VisitUnary(一元表达式节点) 在 System.Linq.Expressions.UnaryExpression.Accept(ExpressionVisitor 访问者) 在 System.Dynamic.Utils.ExpressionVisitorUtils.VisitArguments(ExpressionVisitor 访问者,IArgumentProvider 节点) 在 System.Linq.Expressions.ExpressionVisitor.VisitMethodCall(MethodCallExpression 节点) 在 System.Linq.Expressions.MethodCallExpression.Accept(ExpressionVisitor 访问者) 在 System.Linq.Expressions.ExpressionVisitor.VisitUnary(一元表达式节点) 在 System.Linq.Expressions.UnaryExpression.Accept(ExpressionVisitor 访问者) 在 System.Linq.Expressions.ExpressionVisitor.VisitConditional(条件表达式节点) 在 System.Linq.Expressions.ConditionalExpression.Accept(ExpressionVisitor 访客) 在 System.Dynamic.Utils.ExpressionVisitorUtils.VisitBlockExpressions(ExpressionVisitor 访问者,BlockExpression 块) 在 System.Linq.Expressions.ExpressionVisitor.VisitBlock(BlockExpression 节点) 在 System.Linq.Expressions.BlockExpression.Accept(ExpressionVisitor 访客) at HandlebarsDotNet.Compiler.FunctionBuilder.Compile(IEnumerable1 expressions, Expression parentContext, String templatePath) --- 内部异常堆栈跟踪结束 --- at HandlebarsDotNet.Compiler.FunctionBuilder.Compile(IEnumerable1 expressions, Expression parentContext, String templatePath) at HandlebarsDotNet.Compiler.FunctionBuilder.Compile(IEnumerable1 expressions, String templatePath) --- 内部异常堆栈跟踪结束 --- at HandlebarsDotNet.Compiler.FunctionBuilder.Compile(IEnumerable1 expressions, String templatePath) 在 HandlebarsDotNet.Handlebars.HandlebarsEnvironment.Compile(字符串模板)
我希望有人有想法,因为我已经搜索了很长时间。
好吧,我完全错过了我正在查看 HandleBars.js 文档。
在 HandleBars.js 中,查找助手是内置的,但到目前为止,它还没有出现在 .net 版本中。
所以你必须自己声明查找助手,在我的例子中是这样的:
Handlebars.RegisterHelper("lookup", (output, context, arguments) => { output.WriteSafeString(arguments[0]); });
希望能帮到别人。