public ParameterizedBlobPathSource(string containerNamePattern, string blobNamePattern,
            BindingTemplateSource template)
        {
            Debug.Assert(template != null, "template must not be null");
            Debug.Assert(template.ParameterNames.Count() > 0, "template must contain one or more parameters");

            _containerNamePattern = containerNamePattern;
            _blobNamePattern = blobNamePattern;
            _template = template;
        }
        internal BindingDataProvider(string template)
        {
            _bindingTemplateSource = BindingTemplateSource.FromString(template);

            Dictionary<string, Type> contract = new Dictionary<string, Type>(StringComparer.OrdinalIgnoreCase);
            foreach (string parameterName in _bindingTemplateSource.ParameterNames)
            {
                contract.Add(parameterName, typeof(string));
            }
            _contract = contract;
            _type = typeof(string);
        }
 /// <summary>
 /// Creates a new instance
 /// </summary>
 /// <param name="pattern">The binding template pattern.</param>
 /// <param name="builtInContract">The initial built in contract.</param>
 public BindingContract(string pattern, Dictionary<string, Type> builtInContract)
 {
     _bindingTemplateSource = BindingTemplateSource.FromString(pattern);
     _bindingDataContract = CreateBindingDataContract(builtInContract);
 }