Code:
/ 4.0 / 4.0 / 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. //------------------------------------------------------------------------------ //// 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
- TokenBasedSet.cs
- AccessDataSourceView.cs
- RegexMatch.cs
- SmtpNetworkElement.cs
- Win32KeyboardDevice.cs
- TreeNodeClickEventArgs.cs
- HttpContextServiceHost.cs
- SQLByte.cs
- AsyncOperation.cs
- ReflectPropertyDescriptor.cs
- DesignerActionList.cs
- MsmqProcessProtocolHandler.cs
- ProxyHwnd.cs
- recordstatefactory.cs
- CustomCredentialPolicy.cs
- RepeatBehaviorConverter.cs
- ErrorFormatter.cs
- SafeFileHandle.cs
- AspNetSynchronizationContext.cs
- GridViewRow.cs
- DesignerMetadata.cs
- HttpDictionary.cs
- Module.cs
- ButtonRenderer.cs
- RegistrationServices.cs
- ChoiceConverter.cs
- DataGridLinkButton.cs
- DataControlButton.cs
- XmlCompatibilityReader.cs
- OdbcConnectionStringbuilder.cs
- RectIndependentAnimationStorage.cs
- ListenerAdapter.cs
- CannotUnloadAppDomainException.cs
- OrthographicCamera.cs
- ApplicationHost.cs
- SqlDependencyUtils.cs
- LostFocusEventManager.cs
- TransformCryptoHandle.cs
- ApplicationManager.cs
- FormViewDeleteEventArgs.cs
- nulltextcontainer.cs
- SecUtil.cs
- InputScopeNameConverter.cs
- UIElement3D.cs
- smtppermission.cs
- MobileControlBuilder.cs
- ClientSettingsProvider.cs
- CheckPair.cs
- InternalReceiveMessage.cs
- _SingleItemRequestCache.cs
- DeclarativeCatalogPart.cs
- DataTable.cs
- DataRelation.cs
- EmbossBitmapEffect.cs
- ConnectionPoint.cs
- ResourcePermissionBase.cs
- ProxyAttribute.cs
- BulletChrome.cs
- SystemException.cs
- AssemblyEvidenceFactory.cs
- TextTreeObjectNode.cs
- TypeAccessException.cs
- BoundPropertyEntry.cs
- RenderDataDrawingContext.cs
- BindingCompleteEventArgs.cs
- StretchValidation.cs
- IPPacketInformation.cs
- CollectionContainer.cs
- DataGridViewCellPaintingEventArgs.cs
- StringAttributeCollection.cs
- XmlSchemaAppInfo.cs
- MaskedTextBoxDesignerActionList.cs
- ExecutionContext.cs
- FixedSOMTextRun.cs
- XsltLoader.cs
- SqlDataReaderSmi.cs
- Calendar.cs
- NestedContainer.cs
- RewritingValidator.cs
- EpmHelper.cs
- XmlDocumentSchema.cs
- HuffModule.cs
- XmlSortKeyAccumulator.cs
- PartitionerStatic.cs
- PageParserFilter.cs
- SqlConnectionPoolProviderInfo.cs
- WebServiceMethodData.cs
- ValuePattern.cs
- ClipboardData.cs
- NotifyParentPropertyAttribute.cs
- documentation.cs
- BitmapPalette.cs
- PointAnimation.cs
- HtmlInputSubmit.cs
- DataView.cs
- ApplicationFileCodeDomTreeGenerator.cs
- NominalTypeEliminator.cs
- ObjectHandle.cs
- HandleRef.cs
- DataViewManagerListItemTypeDescriptor.cs