public static CodeBlock mapControlBuilder(this ControlBuilder controlBuilder) { var codeBlock = new CodeBlock(); codeBlock.VirtualPath = controlBuilder.property<string>("VirtualPathString"); codeBlock.ID = controlBuilder.ID; codeBlock.BuilderType = controlBuilder.type().str(); if (controlBuilder.ControlType.notNull()) codeBlock.ControlType = controlBuilder.ControlType.str(); codeBlock.Line = controlBuilder.property<int>("Line"); codeBlock.Column = controlBuilder.property<int>("Column"); codeBlock.TagName = controlBuilder.TagName; codeBlock.SkinID = controlBuilder.property<string>("SkinID"); codeBlock.IsHtmlControl = controlBuilder.property<bool>("IsHtmlControl"); codeBlock.IsHtmlControl = controlBuilder.property<bool>("HasAspCode"); codeBlock.Filter = controlBuilder.property<string>("Filter"); foreach(var simplePropertyEntry in (IEnumerable)controlBuilder.property("SimplePropertyEntries")) { if (simplePropertyEntry is SimplePropertyEntry) codeBlock.SimplePropertyEntries.add(((SimplePropertyEntry)simplePropertyEntry).Name, ((SimplePropertyEntry)simplePropertyEntry).PersistedValue); else "in controlBuilder.SimplePropertyEntries there was an unsupported type: {0}".error(simplePropertyEntry.type()); } foreach(var eventEntry in (IEnumerable)controlBuilder.property("EventEntries")) codeBlock.EventEntries.add(eventEntry.property("Name").str(), eventEntry.property("HandlerMethodName").str()); var content = controlBuilder.property("Content"); if (content.notNull()) codeBlock.Content = content.str(); if (controlBuilder.property("BlockType").notNull()) codeBlock.BlockType = controlBuilder.property("BlockType").str(); foreach(var subBuilder in (IEnumerable)controlBuilder.property("SubBuilders")) { if (subBuilder is string) { codeBlock.SubBlocks.Add(new CodeBlock() { BlockType = subBuilder.type().str(), Content = subBuilder.str() }); } else { codeBlock.SubBlocks.Add(mapControlBuilder((ControlBuilder)subBuilder)); } } return codeBlock; }