Code:
/ FX-1434 / FX-1434 / 1.0 / untmp / whidbey / REDBITS / ndp / fx / src / xsp / System / Web / UI / CollectionBuilder.cs / 1 / CollectionBuilder.cs
//------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //----------------------------------------------------------------------------- /* * Classes related to complex property support. * * Copyright (c) 1999 Microsoft Corporation */ namespace System.Web.UI { using System; using System.Collections; using System.Reflection; using System.Web.Util; [AttributeUsage(AttributeTargets.Property)] internal sealed class IgnoreUnknownContentAttribute : Attribute { internal IgnoreUnknownContentAttribute() {} } ////// internal sealed class CollectionBuilder : ControlBuilder { private Type _itemType; private bool _ignoreUnknownContent; internal CollectionBuilder(bool ignoreUnknownContent) { _ignoreUnknownContent = ignoreUnknownContent; } ///[To be supplied.] ////// public override void Init(TemplateParser parser, ControlBuilder parentBuilder, Type type, string tagName, string ID, IDictionary attribs) { base.Init(parser, parentBuilder, type /*type*/, tagName, ID, attribs); // PropertyInfo propInfo = parentBuilder.ControlType.GetProperty( tagName, BindingFlags.Public | BindingFlags.Instance | BindingFlags.Static | BindingFlags.IgnoreCase); SetControlType(propInfo.PropertyType); Debug.Assert(ControlType != null, "ControlType != null"); BindingFlags bindingFlags = BindingFlags.Public | BindingFlags.Instance; // Look for an "item" property on the collection that takes in an integer index // (similar to IList::Item) propInfo = ControlType.GetProperty("Item", bindingFlags, null, null, new Type[] { typeof(int) }, null); if (propInfo == null) { // fall-back on finding a non-specific Item property // a type with overloaded indexed properties will result in an exception however propInfo = ControlType.GetProperty("Item", bindingFlags); } // If we got one, use it to determine the type of the items if (propInfo != null) _itemType = propInfo.PropertyType; } // This code is only executed when used from the desiger ///[To be supplied.] ////// public override object BuildObject() { return this; } ///[To be supplied.] ////// public override Type GetChildControlType(string tagName, IDictionary attribs) { Type childType = Parser.MapStringToType(tagName, attribs); // If possible, check if the item is of the required type if (_itemType != null) { if (!_itemType.IsAssignableFrom(childType)) { if (_ignoreUnknownContent) return null; string controlTypeName = String.Empty; if (ControlType != null) { controlTypeName = ControlType.FullName; } else { controlTypeName = TagName; } throw new HttpException(SR.GetString( SR.Invalid_collection_item_type, new String[] { controlTypeName, _itemType.FullName, tagName, childType.FullName})); } } return childType; } ///[To be supplied.] ////// public override void AppendLiteralString(string s) { if (_ignoreUnknownContent) return; // Don't allow non-whitespace literal content if (!Util.IsWhiteSpaceString(s)) { throw new HttpException(SR.GetString( SR.Literal_content_not_allowed, ControlType.FullName, s.Trim())); } } } }[To be supplied.] ///
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- RefExpr.cs
- DynamicPropertyHolder.cs
- OdbcStatementHandle.cs
- wpf-etw.cs
- OneOf.cs
- ICspAsymmetricAlgorithm.cs
- TextContainer.cs
- CompositeScriptReferenceEventArgs.cs
- LayoutSettings.cs
- XPathMultyIterator.cs
- DrawingState.cs
- ResourcePermissionBaseEntry.cs
- BitmapEffectState.cs
- SqlServer2KCompatibilityCheck.cs
- SafeTimerHandle.cs
- ComPlusInstanceProvider.cs
- ErrorTableItemStyle.cs
- ToolStripLocationCancelEventArgs.cs
- OrderPreservingPipeliningSpoolingTask.cs
- KnownBoxes.cs
- XmlSerializerNamespaces.cs
- AutomationAttributeInfo.cs
- QuaternionRotation3D.cs
- StaticExtension.cs
- SqlDataSourceQueryEditorForm.cs
- DbConnectionPoolIdentity.cs
- WebConvert.cs
- TransformDescriptor.cs
- CultureInfo.cs
- ColumnMapVisitor.cs
- StandardOleMarshalObject.cs
- CharacterHit.cs
- OperandQuery.cs
- TreeView.cs
- SessionParameter.cs
- SelectionProviderWrapper.cs
- WmlSelectionListAdapter.cs
- GlyphCollection.cs
- AutomationElement.cs
- SwitchLevelAttribute.cs
- AdditionalEntityFunctions.cs
- DataGridToolTip.cs
- WebPartZoneBaseDesigner.cs
- MimeTextImporter.cs
- SafeSerializationManager.cs
- FtpCachePolicyElement.cs
- EdmScalarPropertyAttribute.cs
- HtmlInputHidden.cs
- AudienceUriMode.cs
- TemplateField.cs
- ComPlusTraceRecord.cs
- TransactionManagerProxy.cs
- DigitShape.cs
- x509store.cs
- Bitmap.cs
- TypeExtension.cs
- DesignTimeVisibleAttribute.cs
- RegexCaptureCollection.cs
- ImageUrlEditor.cs
- RequestStatusBarUpdateEventArgs.cs
- safelinkcollection.cs
- HandleScope.cs
- EventSource.cs
- ElementAction.cs
- AnimationStorage.cs
- Converter.cs
- COM2ColorConverter.cs
- ZoneIdentityPermission.cs
- BindingList.cs
- TableAutomationPeer.cs
- TextEndOfSegment.cs
- AdvancedBindingEditor.cs
- DataSourceExpressionCollection.cs
- WindowsStatic.cs
- PathSegment.cs
- ScriptingJsonSerializationSection.cs
- _HelperAsyncResults.cs
- ConfigPathUtility.cs
- Hex.cs
- FixedFlowMap.cs
- ClientScriptManager.cs
- Select.cs
- MenuStrip.cs
- Decimal.cs
- LongAverageAggregationOperator.cs
- SliderAutomationPeer.cs
- addressfiltermode.cs
- FacetDescriptionElement.cs
- PriorityItem.cs
- WpfXamlType.cs
- MultiView.cs
- EntityDataSourceDesigner.cs
- X509SubjectKeyIdentifierClause.cs
- SmtpClient.cs
- PrintPreviewGraphics.cs
- Matrix.cs
- ExtendedPropertyCollection.cs
- SqlProviderManifest.cs
- ClientEndpointLoader.cs
- HandlerFactoryCache.cs