コード例 #1
0
        public object ApplyConfig(INode node)
        {
            var config = _configs.SingleOrDefault(c => c.Matches(node));

            if (config != null)
            {
                var vals = new Dictionary <string, object>(StringComparer.OrdinalIgnoreCase);

                config.Fields.Apply(f =>
                {
                    var ctx = new ResolveValueContext
                    {
                        Source = node
                    };

                    var result = f.Resolver.Resolve(ctx);

                    if (result is INode)
                    {
                        result = ApplyConfig(result as INode);
                    }
                    else if (result is IEnumerable && !(result is string))
                    {
                        result = GetListResult(result as IEnumerable);
                    }

                    vals[f.Name] = result;
                });

                return(config.PrintAst(vals));
            }

            return(null);
        }
コード例 #2
0
 object IValueResolver.Resolve(ResolveValueContext context)
 {
     return(Resolve(context));
 }
コード例 #3
0
 public TProperty Resolve(ResolveValueContext context)
 {
     return(_property.Compile()(context.SourceAs <TObject>()));
 }