Code:
/ FX-1434 / FX-1434 / 1.0 / untmp / whidbey / REDBITS / ndp / fx / src / xsp / System / Web / UI / ParseChildrenAsPropertiesAttribute.cs / 1 / ParseChildrenAsPropertiesAttribute.cs
//------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //----------------------------------------------------------------------------- namespace System.Web.UI { using System; using System.Collections; using System.ComponentModel; using System.Security.Permissions; using System.Web.Util; ////// Define the metadata attribute that controls use to mark the fact /// that their children are in fact properties. /// Furthermore, if a string is passed in the constructor, it specifies /// the name of the defaultproperty. /// [AttributeUsage(AttributeTargets.Class)] [AspNetHostingPermission(SecurityAction.LinkDemand, Level=AspNetHostingPermissionLevel.Minimal)] public sealed class ParseChildrenAttribute : Attribute { public static readonly ParseChildrenAttribute ParseAsChildren = new ParseChildrenAttribute(false, false); public static readonly ParseChildrenAttribute ParseAsProperties = new ParseChildrenAttribute(true, false); public static readonly ParseChildrenAttribute Default = ParseAsChildren; private bool _childrenAsProps; private string _defaultProperty; private Type _childControlType; private bool _allowChanges = true; ////// Needed to use named parameters (ASURT 78869) /// public ParseChildrenAttribute() : this(false, null) { } ////// public ParseChildrenAttribute(bool childrenAsProperties) : this(childrenAsProperties, null) { } public ParseChildrenAttribute(Type childControlType) : this(false, null) { if (childControlType == null) { throw new ArgumentNullException("childControlType"); } _childControlType = childControlType; } ////// Needed to create immutable static readonly instances of this attribute /// private ParseChildrenAttribute(bool childrenAsProperties, bool allowChanges) : this(childrenAsProperties, null) { _allowChanges = allowChanges; } ////// public ParseChildrenAttribute(bool childrenAsProperties, string defaultProperty) { _childrenAsProps = childrenAsProperties; if (_childrenAsProps == true) { _defaultProperty = defaultProperty; } } ////// public Type ChildControlType { get { if (_childControlType == null) { return typeof(System.Web.UI.Control); } return _childControlType; } } ///Indicates the allowed child control type. /// This property is read-only. ////// public bool ChildrenAsProperties { get { return _childrenAsProps; } set { if (_allowChanges == false) { throw new NotSupportedException(); } _childrenAsProps = value; } } ////// public string DefaultProperty { get { if (_defaultProperty == null) { return String.Empty; } return _defaultProperty; } set { if (_allowChanges == false) { throw new NotSupportedException(); } _defaultProperty = value; } } ////// /// public override int GetHashCode() { if (_childrenAsProps == false) { return HashCodeCombiner.CombineHashCodes(_childrenAsProps.GetHashCode(), _childControlType.GetHashCode()); } else { return HashCodeCombiner.CombineHashCodes(_childrenAsProps.GetHashCode(), DefaultProperty.GetHashCode()); } } ////// /// public override bool Equals(object obj) { if (obj == this) { return true; } ParseChildrenAttribute pca = obj as ParseChildrenAttribute; if (pca != null) { if (_childrenAsProps == false) { return pca.ChildrenAsProperties == false && pca._childControlType == _childControlType; } else { return pca.ChildrenAsProperties && (DefaultProperty.Equals(pca.DefaultProperty)); } } return false; } ////// /// public override bool IsDefaultAttribute() { return this.Equals(Default); } } }
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- ApplicationDirectory.cs
- TreeView.cs
- AudioBase.cs
- ByteRangeDownloader.cs
- WebPartEventArgs.cs
- XmlEncoding.cs
- DataColumnMappingCollection.cs
- EndCreateSecurityTokenRequest.cs
- IOException.cs
- VoiceChangeEventArgs.cs
- WorkflowQueue.cs
- SimplePropertyEntry.cs
- IApplicationTrustManager.cs
- ProfilePropertyNameValidator.cs
- Keywords.cs
- SubstitutionDesigner.cs
- TagPrefixAttribute.cs
- PropertyStore.cs
- Lease.cs
- ManagedWndProcTracker.cs
- WizardPanelChangingEventArgs.cs
- StrongNameUtility.cs
- ContentPosition.cs
- XmlSchemaType.cs
- TextDecoration.cs
- FreeFormDragDropManager.cs
- SimpleType.cs
- BasicBrowserDialog.cs
- DataGridViewCellEventArgs.cs
- SecurityContext.cs
- BitmapEffectState.cs
- TextBreakpoint.cs
- WindowsImpersonationContext.cs
- InputDevice.cs
- SqlVisitor.cs
- HttpRuntime.cs
- DiagnosticsConfigurationHandler.cs
- RuntimeHelpers.cs
- XhtmlCssHandler.cs
- XsltContext.cs
- BaseDataList.cs
- SynchronizationValidator.cs
- SizeIndependentAnimationStorage.cs
- ConfigurationSectionGroupCollection.cs
- HttpPostedFileWrapper.cs
- EndpointNotFoundException.cs
- Util.cs
- HeaderPanel.cs
- WebPartAddingEventArgs.cs
- X509CertificateChain.cs
- TextBoxBase.cs
- DocumentReference.cs
- _HeaderInfoTable.cs
- State.cs
- AnyReturnReader.cs
- Membership.cs
- HttpStaticObjectsCollectionBase.cs
- AdRotator.cs
- BufferModesCollection.cs
- Thickness.cs
- XmlDeclaration.cs
- NotConverter.cs
- CodeGenerator.cs
- AccessDataSource.cs
- DataGridViewHitTestInfo.cs
- UmAlQuraCalendar.cs
- ChineseLunisolarCalendar.cs
- AuthenticatedStream.cs
- StringFreezingAttribute.cs
- MouseActionValueSerializer.cs
- MenuBase.cs
- ButtonChrome.cs
- WindowsListBox.cs
- CompilationSection.cs
- TimeSpanMinutesConverter.cs
- Decimal.cs
- OdbcError.cs
- StructuredProperty.cs
- PageCache.cs
- SqlBinder.cs
- WindowProviderWrapper.cs
- _ReceiveMessageOverlappedAsyncResult.cs
- SystemEvents.cs
- ProcessModule.cs
- Attributes.cs
- ActivityDesignerLayoutSerializers.cs
- HelloOperation11AsyncResult.cs
- CodeSnippetStatement.cs
- MediaPlayer.cs
- MasterPageCodeDomTreeGenerator.cs
- FixedDocument.cs
- TextEmbeddedObject.cs
- ConfigurationSchemaErrors.cs
- DiffuseMaterial.cs
- WebPartDescriptionCollection.cs
- Odbc32.cs
- TextServicesCompartment.cs
- ParserContext.cs
- PointCollection.cs
- SqlDependencyUtils.cs