Пример #1
0
        public RazorDocument Load(XDocument source)
        {
            if (source == null || source.Root == null)
            {
                return(null);
            }

            var root         = source.Root;
            var metadataEl   = root.Element("Metadata") ?? new XElement("Metadata");
            var referencesEl = root.Element("References") ?? new XElement("References");
            var modelEl      = root.Element("Model") ?? new XElement("Model");
            var templateEl   = root.Element("Template") ?? new XElement("Template");

            var modelProviderEl   = modelEl.Attribute("Provider");
            var modelProviderName = (modelProviderEl == null) ? "Json" : modelProviderEl.Value;
            var modelProvider     = _modelProviders.Create(modelProviderName);

            modelProvider.Deserialize(modelEl.Value);
            var references = referencesEl.Elements().Select(x => x.Value).Where(x => !string.IsNullOrWhiteSpace(x));

            IDictionary <string, string> metadata =
                metadataEl.Elements()
                .Select(x => new KeyValuePair <string, string>(x.Name.LocalName, x.Value))
                .ToDictionary(val => val.Key, val => val.Value);

            return(new RazorDocument(templateEl.Value, references, modelProvider, metadata));
        }
Пример #2
0
        private void UpdateModelProvider(string providerName)
        {
            var newModelProvider = _modelProviderFactory.Create(providerName);

            UpdateModelProvider(newModelProvider);
        }