public ITemplate CreateTemplate(string language, string templateName, object model) { ITemplate template = _defaultFactory.CreateTemplate(language, templateName, model); if (templateName.StartsWith("Client.Class.Body")) { // This gets called before the Class.Body template so use it to get the client template model _clientTemplateModel = (CSharpClientTemplateModel)HashObjectProperty.GetValue(model); } if (templateName.StartsWith("Class.Body")) { // Get all the operations so we can create proxies in the model objects ClassTemplateModel classTemplateModel = (ClassTemplateModel)HashObjectProperty.GetValue(model); return(new ClassBodyTemplate(classTemplateModel, _clientTemplateModel)); } if (templateName == "Class.Inheritance") { // Add IClientModel to the interface list return(new ClassInheritanceTemplate(template)); } if (templateName == "Class.Constructor") { // Changes the constructor to take a NetlifyClient ClassTemplateModel classTemplateModel = (ClassTemplateModel)HashObjectProperty.GetValue(model); return(new ClassConstructorTemplate(classTemplateModel, _clientSettings)); } return(template); }
public void RegisterTemplate(string file, string name, TemplateKind kind) { if (_templates.ContainsKey(name)) { throw RuntimeException.InvalidArgumentValue(name); } var template = _factory.CreateTemplate(file, kind); _templates.Add(name, template); }
public ITemplate CreateTemplate(string package, string template, object model) { if (model is ClassTemplateModel ctm) { if (_schema.Definitions.TryGetValue(ctm.Class, out var modelSchema)) { if (modelSchema.ExtensionData != null && modelSchema.ExtensionData.ContainsKey("X-ContractVersion")) { var options = new CSharpClassTemplateOptions(); if (modelSchema.ExtensionData.TryGetValue("X-ContractName", out var contractName)) { options.ContractName = contractName.ToString(); } options.ContractVersion = Version.Parse(modelSchema.ExtensionData["X-ContractVersion"].ToString()); return(new CSharpClassTemplate(ctm, options)); } } } return(Default.CreateTemplate(package, template, model)); }