Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / xsp / System / Web / UI / ParseChildrenAsPropertiesAttribute.cs / 1305376 / 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)] 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); } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- DbParameterCollection.cs
- TransformedBitmap.cs
- MouseOverProperty.cs
- Timer.cs
- MessageDecoder.cs
- ThreadInterruptedException.cs
- MultilineStringConverter.cs
- TargetParameterCountException.cs
- DataServiceClientException.cs
- ToolStripDropDownMenu.cs
- PolicyValidationException.cs
- WebMessageBodyStyleHelper.cs
- ConcatQueryOperator.cs
- CoTaskMemHandle.cs
- Point4D.cs
- ElementHost.cs
- ContextDataSourceView.cs
- XamlPathDataSerializer.cs
- CompareValidator.cs
- SamlSubject.cs
- FlatButtonAppearance.cs
- Visual.cs
- Activator.cs
- PeerContact.cs
- AppSettingsReader.cs
- ExpressionVisitor.cs
- BitmapMetadata.cs
- CodeTypeDeclaration.cs
- StorageComplexTypeMapping.cs
- ConnectionConsumerAttribute.cs
- ToolStripRenderEventArgs.cs
- OracleEncoding.cs
- ElementHostAutomationPeer.cs
- PermissionRequestEvidence.cs
- BasicSecurityProfileVersion.cs
- SizeAnimationBase.cs
- PenLineJoinValidation.cs
- DataGridParentRows.cs
- TagNameToTypeMapper.cs
- CompModHelpers.cs
- ChannelTracker.cs
- PolyLineSegment.cs
- DurableInstancingOptions.cs
- PKCS1MaskGenerationMethod.cs
- PseudoWebRequest.cs
- PixelShader.cs
- MetabaseReader.cs
- IxmlLineInfo.cs
- RectangleConverter.cs
- EntityWrapper.cs
- ValidationRule.cs
- DecoderNLS.cs
- JpegBitmapEncoder.cs
- ListMarkerSourceInfo.cs
- BehaviorEditorPart.cs
- CapacityStreamGeometryContext.cs
- SignatureDescription.cs
- DefaultAsyncDataDispatcher.cs
- StaticExtension.cs
- CacheMode.cs
- EditorOptionAttribute.cs
- DataBindingHandlerAttribute.cs
- ContextMenu.cs
- TextBoxBase.cs
- ObjectListCommand.cs
- PartitionedStreamMerger.cs
- ReversePositionQuery.cs
- PriorityQueue.cs
- QilCloneVisitor.cs
- UIAgentAsyncParams.cs
- XPathNavigatorKeyComparer.cs
- RequiredFieldValidator.cs
- Relationship.cs
- HostSecurityManager.cs
- WorkflowApplicationIdleEventArgs.cs
- RTLAwareMessageBox.cs
- PrintPreviewGraphics.cs
- PageContent.cs
- TextRangeProviderWrapper.cs
- X509IssuerSerialKeyIdentifierClause.cs
- CategoryAttribute.cs
- OleDbConnection.cs
- VisualSerializer.cs
- StateMachineWorkflow.cs
- RequestCacheEntry.cs
- DocumentAutomationPeer.cs
- Base64Encoder.cs
- CodeNamespace.cs
- RNGCryptoServiceProvider.cs
- ComponentResourceKey.cs
- SweepDirectionValidation.cs
- ViewStateModeByIdAttribute.cs
- LeaseManager.cs
- ImageSourceConverter.cs
- WsrmFault.cs
- SplineKeyFrames.cs
- ArrayListCollectionBase.cs
- AxisAngleRotation3D.cs
- QuaternionKeyFrameCollection.cs
- SortKey.cs