我正在尝试使用.net core 和handlebars 构建代码生成框架,我需要自定义表达式如何映射到handlebars.net 中的值。这是可能的吗?我最接近的是将我的输入对象转换为字典,但它没有给我所需的灵活性,有没有我可以实现的接口来实现这一点?
问问题
116 次
2 回答
1
如果我的意图正确,您可以查看Handlebars.CSharp > IObjectDescriptorProvider(使用示例)。
PS Handlebars.CSharp是我维护的Handlebars.Net的一个分支。
更新:
提到的功能已经合并到Handlebars.Net
于 2020-05-31T21:08:03.410 回答
0
我最终创建了一个自定义接口,可以将任何对象转换为字典。这是当前的实现,如果有人最终需要它的话。
public interface IHandlebarsContextConverter
{
IDictionary<string, object> Convert(object @object);
}
public class HandlebarsContextConverterFields : IHandlebarsContextConverter
{
public IDictionary<string, object> Convert(object @object)
{
return @object.GetType()
.GetFields(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic)
.ToDictionary(x => x.Name, x => x.GetValue(@object));
}
}
public class HandlebarsContextConverterProperties : IHandlebarsContextConverter
{
public IDictionary<string, object> Convert(object @object)
{
return @object.GetType()
.GetProperties(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic)
.ToDictionary(x => x.Name, x => x.GetValue(@object, null));
}
}
var converter = new HandlebarsContextConverterMerge(
new HandlebarsContextConverterFields(),
new HandlebarsContextConverterProperties());
于 2020-04-04T18:49:11.590 回答