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)); }
private void UpdateModelProvider(string providerName) { var newModelProvider = _modelProviderFactory.Create(providerName); UpdateModelProvider(newModelProvider); }