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
- BrowserCapabilitiesFactory.cs
- HandlerBase.cs
- PackWebRequest.cs
- AsmxEndpointPickerExtension.cs
- ConsoleCancelEventArgs.cs
- DocumentPropertiesDialog.cs
- DelegatingTypeDescriptionProvider.cs
- DataListItemEventArgs.cs
- HashJoinQueryOperatorEnumerator.cs
- AppDomainAttributes.cs
- InfoCardAsymmetricCrypto.cs
- Signature.cs
- RemoteWebConfigurationHost.cs
- CodeDirectoryCompiler.cs
- DelegateSerializationHolder.cs
- LinkedResource.cs
- connectionpool.cs
- RemotingSurrogateSelector.cs
- MessageSecurityVersionConverter.cs
- LogReserveAndAppendState.cs
- DataColumnMapping.cs
- ObjectQueryProvider.cs
- WebPartCatalogCloseVerb.cs
- AutomationIdentifier.cs
- ObjectStorage.cs
- WebPartAuthorizationEventArgs.cs
- DateTimeFormatInfoScanner.cs
- loginstatus.cs
- TimeStampChecker.cs
- CertificateReferenceElement.cs
- CallbackWrapper.cs
- ToolStripMenuItemCodeDomSerializer.cs
- XmlDataSourceView.cs
- RoleServiceManager.cs
- DataRelation.cs
- Soap.cs
- TcpAppDomainProtocolHandler.cs
- SqlFunctionAttribute.cs
- ConfigViewGenerator.cs
- SqlCacheDependency.cs
- ArraySegment.cs
- WinInet.cs
- ISAPIRuntime.cs
- BitmapEffectInput.cs
- ControlPropertyNameConverter.cs
- StorageAssociationSetMapping.cs
- HtmlTitle.cs
- EventProviderTraceListener.cs
- ClipboardData.cs
- XmlNode.cs
- HybridDictionary.cs
- CodeEntryPointMethod.cs
- WindowsEditBoxRange.cs
- StrongName.cs
- ContainerUIElement3D.cs
- RowUpdatingEventArgs.cs
- WinEventTracker.cs
- TextLine.cs
- PersianCalendar.cs
- DirectoryInfo.cs
- IIS7UserPrincipal.cs
- SmiGettersStream.cs
- HandlerFactoryCache.cs
- FirstMatchCodeGroup.cs
- ScaleTransform.cs
- LinkConverter.cs
- DelegatingTypeDescriptionProvider.cs
- SettingsPropertyValue.cs
- FilteredDataSetHelper.cs
- DynamicPropertyReader.cs
- ParameterReplacerVisitor.cs
- HtmlTableCellCollection.cs
- GC.cs
- LogEntryHeaderDeserializer.cs
- XmlSchemaCompilationSettings.cs
- HttpTransportSecurity.cs
- VideoDrawing.cs
- PageVisual.cs
- FileDialogPermission.cs
- AnonymousIdentificationModule.cs
- ComponentEvent.cs
- ContentIterators.cs
- WebPartTracker.cs
- MatrixAnimationBase.cs
- followingquery.cs
- FacetValues.cs
- HostingEnvironmentException.cs
- StreamMarshaler.cs
- TypeConvertions.cs
- PrinterResolution.cs
- WorkflowDesignerMessageFilter.cs
- XmlILConstructAnalyzer.cs
- Identifier.cs
- DES.cs
- RawStylusInputReport.cs
- MouseBinding.cs
- WebBrowserSiteBase.cs
- TextSelectionHighlightLayer.cs
- CqlBlock.cs
- PartitionResolver.cs