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
- Logging.cs
- DbConnectionPoolGroup.cs
- PagedControl.cs
- SqlBuffer.cs
- ControlPropertyNameConverter.cs
- ErrorActivity.cs
- RootBuilder.cs
- SafeNativeMethods.cs
- dataobject.cs
- MultiBinding.cs
- Point3D.cs
- NetworkStream.cs
- SoapHeader.cs
- DocumentXPathNavigator.cs
- WriteableBitmap.cs
- SchemaImporterExtensionElement.cs
- TokenBasedSet.cs
- coordinatorscratchpad.cs
- FlowDocumentPaginator.cs
- CounterSet.cs
- DefaultValueAttribute.cs
- FileDialogCustomPlacesCollection.cs
- QueryReaderSettings.cs
- infer.cs
- XmlSchema.cs
- PropertyCollection.cs
- RoutedUICommand.cs
- PatternMatcher.cs
- SqlRemoveConstantOrderBy.cs
- SqlCacheDependency.cs
- ButtonBase.cs
- ValidationHelper.cs
- LinkClickEvent.cs
- EDesignUtil.cs
- PropertyMapper.cs
- InheritanceAttribute.cs
- AspNetCompatibilityRequirementsMode.cs
- NotSupportedException.cs
- GeneralTransform3D.cs
- ReceiveMessageRecord.cs
- EncodingDataItem.cs
- ArgumentReference.cs
- AsymmetricKeyExchangeFormatter.cs
- MouseActionConverter.cs
- UseAttributeSetsAction.cs
- HttpsHostedTransportConfiguration.cs
- WindowsGrip.cs
- ISO2022Encoding.cs
- MatrixKeyFrameCollection.cs
- DataServiceConfiguration.cs
- Point3DAnimationUsingKeyFrames.cs
- Semaphore.cs
- VisualStyleRenderer.cs
- DataSet.cs
- DictationGrammar.cs
- DetailsView.cs
- BindingGroup.cs
- UpdateCommand.cs
- FixedSchema.cs
- XmlDesigner.cs
- ScrollChrome.cs
- ThreadAttributes.cs
- ClientOptions.cs
- ElementsClipboardData.cs
- DateBoldEvent.cs
- PackageProperties.cs
- ImageCodecInfoPrivate.cs
- TransactionFlowElement.cs
- Formatter.cs
- XmlToDatasetMap.cs
- DataGridViewAutoSizeColumnModeEventArgs.cs
- WebPartZoneBase.cs
- XmlIlVisitor.cs
- HelpEvent.cs
- CurrentTimeZone.cs
- MissingManifestResourceException.cs
- WebPartVerbCollection.cs
- GroupJoinQueryOperator.cs
- ProjectionNode.cs
- MethodExpr.cs
- RowTypePropertyElement.cs
- OpacityConverter.cs
- WebPartDeleteVerb.cs
- ImmutableCollection.cs
- ListItemCollection.cs
- mactripleDES.cs
- PkcsUtils.cs
- DocumentEventArgs.cs
- ThousandthOfEmRealDoubles.cs
- ObjectAnimationBase.cs
- SspiNegotiationTokenProviderState.cs
- Helpers.cs
- ClonableStack.cs
- BoolExpressionVisitors.cs
- HttpInputStream.cs
- FileChangesMonitor.cs
- HttpServerChannel.cs
- DivideByZeroException.cs
- XmlDocumentType.cs
- TreeNodeBinding.cs