【问题标题】:Provide Custom Value Binder in Handlebars.NET在 Handlebars.NET 中提供自定义值绑定器
【发布时间】:2020-07-16 16:51:00
【问题描述】:

我正在尝试使用 .net 核心和把手构建代码生成框架,我需要自定义表达式如何映射到把手.net 中的值。这是可能的吗?我最接近的是将输入对象转换为字典,但它没有给我所需的灵活性,有没有我可以实现的接口来实现这一点?

【问题讨论】:

    标签: c# handlebars.js handlebars.net


    【解决方案1】:

    如果我理解你的意图,你可以看看Handlebars.CSharp > IObjectDescriptorProvider (usage example)。

    附: Handlebars.CSharp 是我维护的 Handlebars.Net 的一个分支。

    更新:

    提到的功能已经合并到Handlebars.Net

    【讨论】:

      【解决方案2】:

      我最终创建了一个自定义接口,可以将任何对象转换为字典。这是当前的实现,如果有人最终需要它的话。

      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-06-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-11-01
        • 2020-07-30
        • 1970-01-01
        • 2012-01-22
        相关资源
        最近更新 更多