public override void AppendSubBuilder(ControlBuilder subBuilder) { if (_doLiteralText) { // The first one is used if ASP.NET is compiled with FAST_DATABINDING off. The second // is used if it is compiled with FAST_DATABINDING on. Note: We can't do a type // comparison because CodeBlockBuilder is internal. // if (typeof(DataBoundLiteralControl).IsAssignableFrom(subBuilder.ControlType)) if (subBuilder.GetType().FullName == "System.Web.UI.CodeBlockBuilder") { TextParser.AddDataBinding(subBuilder); } else { base.AppendSubBuilder(subBuilder); if (subBuilder.ControlType != typeof(LiteralText)) { if (_textParser != null) { _textParser.ResetBreaking(); } else { _controlsInserted = true; } } } } else { base.AppendSubBuilder(subBuilder); } }
protected ControlBuilder GetParentBuilder(ControlBuilder controlBuilder) { if (controlBuilder == null) { throw new ArgumentNullException("controlBuilder"); } return((ControlBuilder)controlBuilder.GetType().GetProperty("ParentBuilder", InstPubNonpub).GetValue(controlBuilder, null)); }
protected ArrayList GetSubBuilders(ControlBuilder controlBuilder) { if (controlBuilder == null) { throw new ArgumentNullException("controlBuilder"); } return((ArrayList)controlBuilder.GetType().GetProperty("SubBuilders", InstPubNonpub).GetValue(controlBuilder, null)); }
public static ICollection GetSimplePropertyEntries(this ControlBuilder @this) { Require.NotNull(@this, nameof(@this)); return (ICollection)@this .GetType() .GetProperty("SimplePropertyEntries", BINDING_ATTR) .GetValue(@this, null /* index */); }
public static ControlBuilder GetParentBuilder(this ControlBuilder @this) { Require.NotNull(@this, nameof(@this)); return (ControlBuilder)@this .GetType() .GetProperty("ParentBuilder", BINDING_ATTR) .GetValue(@this, null /* index */); }
public static ControlBuilder GetDefaultPropertyBuilder(this ControlBuilder @this) { Require.NotNull(@this, nameof(@this)); PropertyInfo pi = null; Type type = @this.GetType(); while (type != null && (pi = type.GetProperty("DefaultPropertyBuilder", BINDING_ATTR)) == null) { type = type.BaseType; } return (ControlBuilder)pi.GetValue(@this, index: null); }
/// <include file='doc\Form.uex' path='docs/doc[@for="FormControlBuilder.AppendSubBuilder"]/*' /> public override void AppendSubBuilder(ControlBuilder subBuilder) { Type controlType = subBuilder.ControlType; if (!( (subBuilder.GetType().FullName == "System.Web.UI.CodeBlockBuilder") || (typeof(MobileControl).IsAssignableFrom(controlType)) || (typeof(UserControl).IsAssignableFrom(controlType)) || (typeof(DeviceSpecific).IsAssignableFrom(controlType)) )) { throw(new Exception(SR.GetString(SR.Form_InvalidSubControlType, subBuilder.TagName))); } base.AppendSubBuilder(subBuilder); }
protected ControlBuilder GetDefaultPropertyBuilder(ControlBuilder controlBuilder) { if (controlBuilder == null) { throw new ArgumentNullException("controlBuilder"); } PropertyInfo pi = null; Type type = controlBuilder.GetType(); while (type != null && (InlineAssignHelper(ref pi, type.GetProperty("DefaultPropertyBuilder", InstPubNonpub))) == null) { type = type.BaseType; } return((ControlBuilder)pi.GetValue(controlBuilder, null)); }
protected ArrayList GetComplexPropertyEntries(ControlBuilder controlBuilder) { if (controlBuilder == null) { throw new ArgumentNullException("controlBuilder"); } ICollection cpes = (ICollection)controlBuilder.GetType().GetProperty("ComplexPropertyEntries", InstPubNonpub).GetValue(controlBuilder, null); if (cpes == null || cpes.Count == 0) { return(new ArrayList(0)); } else { return((ArrayList)cpes); } }
public override void ParseComplete(ControlBuilder rootBuilder) { base.ParseComplete(rootBuilder); Type type = rootBuilder.GetType(); ViewPageControlBuilderEx viewPageControlBuilder = rootBuilder as ViewPageControlBuilderEx; if (viewPageControlBuilder != null) { viewPageControlBuilder.PageBaseType = this._viewBaseType; } ViewUserControlControlBuilderEx viewUserControlControlBuilder = rootBuilder as ViewUserControlControlBuilderEx; if (viewUserControlControlBuilder != null) { viewUserControlControlBuilder.UserControlBaseType = this._viewBaseType; } }
private static void GetChildControlOfControlBuilder(ControlBuilder builder, string tagName) { try { // Get the child control type of passed // builder using passed tag name. var type = builder.GetChildControlType( tagName, new Dictionary <string, string>() ); Logging.Log($"Child Control Type of {builder.GetType().Name} (ID: {builder.ID}) is {type}"); } catch (System.Web.HttpParseException exception) { // Output expected HttpParseExceptions. Logging.Log(exception); } catch (Exception exception) { // Output unexpected Exceptions. Logging.Log(exception, false); } }
void CreateControlSkinMethod(ControlBuilder builder) { if (builder.ControlType == null) { return; } EnsureID(builder); CodeMemberMethod method = new CodeMemberMethod(); method.Name = "__BuildControl_" + builder.ID; method.Parameters.Add(new CodeParameterDeclarationExpression(typeof(Control), "ctrl")); mainClass.Members.Add(method); builder.Method = method; builder.MethodStatements = method.Statements; method.ReturnType = new CodeTypeReference(typeof(Control)); // _ctrl = ($controlType)(ctrl); // CodeCastExpression castExpr = new CodeCastExpression(builder.ControlType, new CodeVariableReferenceExpression("ctrl")); method.Statements.Add(new CodeVariableDeclarationStatement(builder.ControlType, "__ctrl")); CodeAssignStatement assign = new CodeAssignStatement(); assign.Left = ctrlVar; assign.Right = castExpr; method.Statements.Add(assign); CreateAssignStatementsFromAttributes(builder); if (builder.Children != null) { foreach (object o in builder.Children) { if (!(o is ControlBuilder)) { continue; } ControlBuilder b = (ControlBuilder)o; if (b.ControlType == null) { continue; } if (b is CollectionBuilder) { PropertyInfo itemsProp = null; try { itemsProp = b.GetType().GetProperty("Items"); } catch (Exception) {} if (itemsProp != null) { /* emit a prop.Clear call before populating the collection */; CodePropertyReferenceExpression prop = new CodePropertyReferenceExpression(ctrlVar, b.TagName); CodePropertyReferenceExpression items = new CodePropertyReferenceExpression(prop, "Items"); method.Statements.Add(new CodeMethodInvokeExpression(items, "Clear")); } } CreateControlTree(b, false, builder.ChildrenAsProperties); AddChildCall(builder, b); } } builder.Method.Statements.Add(new CodeMethodReturnStatement(ctrlVar)); }