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
- _UriTypeConverter.cs
- ValidatorCompatibilityHelper.cs
- TableParaClient.cs
- CommandHelpers.cs
- KeyboardDevice.cs
- CssStyleCollection.cs
- GridViewColumnHeaderAutomationPeer.cs
- RawTextInputReport.cs
- __Filters.cs
- XmlReaderDelegator.cs
- RectAnimationUsingKeyFrames.cs
- XPathDescendantIterator.cs
- SimpleType.cs
- MsmqIntegrationBindingElement.cs
- SystemWebSectionGroup.cs
- HyperLink.cs
- SRef.cs
- TypeUtil.cs
- DetailsView.cs
- SafeCoTaskMem.cs
- GeometryConverter.cs
- ReadOnlyNameValueCollection.cs
- URLIdentityPermission.cs
- DesignerSerializationVisibilityAttribute.cs
- CacheOutputQuery.cs
- Stopwatch.cs
- cookieexception.cs
- SynchronizationContext.cs
- IriParsingElement.cs
- RegisteredArrayDeclaration.cs
- ChildTable.cs
- EasingKeyFrames.cs
- DataGridViewButtonCell.cs
- SingleAnimationUsingKeyFrames.cs
- ReferenceSchema.cs
- XXXInfos.cs
- TripleDESCryptoServiceProvider.cs
- Helper.cs
- Win32Native.cs
- SafeRightsManagementQueryHandle.cs
- DetailsViewInsertEventArgs.cs
- DNS.cs
- PointF.cs
- EnumValAlphaComparer.cs
- CmsInterop.cs
- AvtEvent.cs
- Assert.cs
- DesignSurfaceEvent.cs
- unsafeIndexingFilterStream.cs
- DataSetMappper.cs
- SqlBinder.cs
- CredentialCache.cs
- XmlSchemaAnnotation.cs
- ColumnHeader.cs
- MemoryMappedFile.cs
- StringComparer.cs
- ConfigXmlReader.cs
- ComponentCache.cs
- LogSwitch.cs
- FixedSOMImage.cs
- NavigationProperty.cs
- DesignerActionUIStateChangeEventArgs.cs
- Registry.cs
- ButtonBaseDesigner.cs
- TraceUtility.cs
- CacheForPrimitiveTypes.cs
- ScriptBehaviorDescriptor.cs
- MultiBindingExpression.cs
- IPipelineRuntime.cs
- DataGridViewComboBoxColumn.cs
- X509Certificate2.cs
- Util.cs
- ModuleConfigurationInfo.cs
- StatusBarPanelClickEvent.cs
- DataGridViewElement.cs
- ClientScriptManager.cs
- MultiByteCodec.cs
- WriteTimeStream.cs
- SelectionProcessor.cs
- Unit.cs
- SiteMapSection.cs
- Application.cs
- RNGCryptoServiceProvider.cs
- OleDbException.cs
- SR.cs
- SecurityContextTokenValidationException.cs
- BridgeDataReader.cs
- Context.cs
- ContractMapping.cs
- CellCreator.cs
- HttpVersion.cs
- CallTemplateAction.cs
- SessionEndedEventArgs.cs
- WinFormsSpinner.cs
- HtmlInputImage.cs
- unsafenativemethodsother.cs
- CrossSiteScriptingValidation.cs
- ElementProxy.cs
- UnsafeNativeMethodsCLR.cs
- UniqueIdentifierService.cs