Code:
/ FXUpdate3074 / FXUpdate3074 / 1.1 / DEVDIV / depot / DevDiv / releases / whidbey / QFE / 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); } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved. //------------------------------------------------------------------------------ //// 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); } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- HtmlMeta.cs
- StreamInfo.cs
- DirectoryInfo.cs
- TypeUsage.cs
- BinarySerializer.cs
- SchemaCollectionPreprocessor.cs
- Connector.cs
- RecordManager.cs
- SelectionEditingBehavior.cs
- ErrorFormatterPage.cs
- ApplicationException.cs
- EntityTemplateUserControl.cs
- CachedPathData.cs
- DocumentPageTextView.cs
- ErrorTableItemStyle.cs
- DataReaderContainer.cs
- ClientTargetSection.cs
- TableAutomationPeer.cs
- __ConsoleStream.cs
- KerberosReceiverSecurityToken.cs
- OleDbTransaction.cs
- SmtpClient.cs
- _TLSstream.cs
- _ReceiveMessageOverlappedAsyncResult.cs
- hresults.cs
- _NegoStream.cs
- ContentTextAutomationPeer.cs
- HwndSourceKeyboardInputSite.cs
- GridEntryCollection.cs
- PermissionAttributes.cs
- Image.cs
- NullToBooleanConverter.cs
- DataServiceException.cs
- SessionPageStatePersister.cs
- FixedSOMTableRow.cs
- Root.cs
- MetadataArtifactLoaderComposite.cs
- ResXDataNode.cs
- CommonObjectSecurity.cs
- TraceProvider.cs
- GetPageNumberCompletedEventArgs.cs
- WebPartConnectionsConfigureVerb.cs
- TextContainerChangedEventArgs.cs
- SafeNativeMethods.cs
- JournalNavigationScope.cs
- DataGridTableCollection.cs
- EventLogTraceListener.cs
- ConfigurationPermission.cs
- Menu.cs
- CollectionsUtil.cs
- ToolStripDropDownItemDesigner.cs
- GenericWebPart.cs
- _SslState.cs
- RTLAwareMessageBox.cs
- XmlAtomicValue.cs
- PrintingPermission.cs
- ImpersonationContext.cs
- HttpHandlerAction.cs
- FontEmbeddingManager.cs
- PassportAuthenticationEventArgs.cs
- HandlerElement.cs
- ColorPalette.cs
- ObjectFactoryCodeDomTreeGenerator.cs
- AsymmetricSignatureDeformatter.cs
- ListCollectionView.cs
- EventRouteFactory.cs
- TileModeValidation.cs
- OleDbRowUpdatedEvent.cs
- OutputCacheSettings.cs
- XPathDocument.cs
- CssClassPropertyAttribute.cs
- StreamSecurityUpgradeAcceptor.cs
- SqlLiftWhereClauses.cs
- FigureParaClient.cs
- SqlPersonalizationProvider.cs
- HtmlInputPassword.cs
- ListViewItem.cs
- GacUtil.cs
- OrderByQueryOptionExpression.cs
- autovalidator.cs
- DependencyPropertyKind.cs
- SafeViewOfFileHandle.cs
- XmlILModule.cs
- LinqDataSourceUpdateEventArgs.cs
- ReferenceEqualityComparer.cs
- CompiledAction.cs
- SqlExpressionNullability.cs
- IdleTimeoutMonitor.cs
- DescendentsWalkerBase.cs
- ApplicationGesture.cs
- AsymmetricSignatureFormatter.cs
- ExecutionContext.cs
- RestClientProxyHandler.cs
- DisplayNameAttribute.cs
- Ipv6Element.cs
- StylusButton.cs
- TimeZone.cs
- ReadOnlyDictionary.cs
- FontSizeConverter.cs
- ComplexBindingPropertiesAttribute.cs