public static IEnumerable <ResolvedTreeNode> GetDescendants(this ResolvedPropertyTemplate node) { foreach (var child in node.Content.SelectMany(n => n.GetDescendants())) { yield return(child); } }
public override void VisitPropertyTemplate(ResolvedPropertyTemplate propertyTemplate) { var original = requiredResources; base.VisitPropertyTemplate(propertyTemplate); if (original != requiredResources) { propertyTemplate.Content.AddRange( requiredResources.Except(original).Select(r => CreateRequiredResourceControl(r, propertyTemplate.DothtmlNode, propertyTemplate.Content.First().DataContextTypeStack))); requiredResources = original; } }
public override void VisitPropertyTemplate(ResolvedPropertyTemplate propertyTemplate) { var parentName = controlName; var methodName = DefaultViewCompilerCodeEmitter.BuildTemplateFunctionName + $"_{propertyTemplate.Property.DeclaringType.Name}_{propertyTemplate.Property.Name}_{currentTemplateIndex++}"; emitter.PushNewMethod(methodName, typeof(void), emitter.EmitControlBuilderParameters().Concat(new [] { emitter.EmitParameter("templateContainer", typeof(DotvvmControl)) }).ToArray()); // build the statements controlName = "templateContainer"; base.VisitPropertyTemplate(propertyTemplate); emitter.PopMethod(); controlName = parentName; var templateName = CreateTemplate(methodName); SetProperty(controlName, propertyTemplate.Property, SyntaxFactory.IdentifierName(templateName)); }
public override void VisitPropertyTemplate(ResolvedPropertyTemplate propertyTemplate) { var parentName = controlName; var methodName = DefaultViewCompilerCodeEmitter.BuildTemplateFunctionName + currentTemplateIndex; currentTemplateIndex++; emitter.PushNewMethod(methodName); // build the statements controlName = emitter.EmitCreateObject(typeof(PlaceHolder)); base.VisitPropertyTemplate(propertyTemplate); emitter.EmitReturnClause(controlName); emitter.PopMethod(); controlName = parentName; var templateName = CreateTemplate(methodName); SetProperty(controlName, propertyTemplate.Property, SyntaxFactory.IdentifierName(templateName)); }
public override void VisitPropertyTemplate(ResolvedPropertyTemplate propertyTemplate) { Visit(propertyTemplate, propertyTemplate.Content, base.VisitPropertyTemplate); }
public static IEnumerable <ResolvedControl> GetDescendantControls <T>(this ResolvedPropertyTemplate node) { return(GetDescendants(node).OfType <ResolvedControl>().Where(c => c.Metadata.Type == typeof(T))); }
public virtual void VisitPropertyTemplate(ResolvedPropertyTemplate propertyTemplate) { DefaultVisit(propertyTemplate); }