我有这个程序
private static void RunUsingILiquidizable()
{
const string templateString = @"TopInt prop: '{{TopInt}}'; Child.Prop prop: '{{L1Prop.L1Int}}'; Child.Child.Prop prop: '{{L1Prop.L2Prop.L2Int}}'; Dict item: '{{ExtendedProps.Key1}}'";
Template.NamingConvention = new CSharpNamingConvention();
Template.RegisterValueTypeTransformer(typeof(DateTime), (v) => ((DateTime)v).ToString("MM=dd=yy"));
var t = Template.Parse(templateString);
var model = new TopModel()
{
TopInt = 23,
L1Prop = new L1Model()
{
L1Int = 34,
L2Prop = new L2Model() { L2Int = 98 }
},
ExtendedProps = new Dictionary<string, object>() { { "Key1", DateTime.Now } }
};
string output = t.Render(Hash.FromAnonymousObject(model));
Console.WriteLine("RunUsingILiquidizable -->" + output);
}
顶级模型定义:
public class TopModel : ILiquidizable
{
public int TopInt { get; set; }
public L1Model L1Prop { get; set; }
public Dictionary<string, object> ExtendedProps { get; set; }
public object ToLiquid()
{
return new { TopInt, L1Prop, ExtendedProps };
}
}
输出:
RunUsingILiquidizable --> TopInt prop: '23'; Child.Prop 道具:'34'; Child.Child.P 道具:'98'; 字典项目:'08=27=19'
我的问题是 -Template.RegisterValueTypeTransformer
全局类型格式和template.Render(Hash.FromAnonymousObject(model), MyFormatProvider)
所有日期、数字的格式是否相同。
我需要的是通过提供格式在需要时对每个特定令牌进行不同的格式化。对字典尤其重要ExtendedProps
。
我也尝试做过滤器,但有没有办法通过类似的东西{{ExtendedProps.Key1 | SpecialFormat("dd--MM")}}
?