コード例 #1
0
        // Resolve for AutoResolve.Default templates.
        // These only have access to the {sys} builtin variable and don't get access to trigger binding data.
        internal static BindingDataResolver GetBuiltinTemplateResolver(string originalValue, INameResolver nameResolver, Validator validator)
        {
            string resolvedValue = nameResolver.ResolveWholeString(originalValue);

            var template = BindingTemplate.FromString(resolvedValue);

            if (!template.HasParameters)
            {
                // No { } tokens, bind eagerly up front.
                validator(originalValue);
            }

            SystemBindingData.ValidateStaticContract(template);

            // For static default contracts, we only have access to the built in binding data.
            return((newAttr, bindingData) =>
            {
                var newValue = template.Bind(SystemBindingData.GetSystemBindingData(bindingData));
                validator(newValue);
                return newValue;
            });
        }