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
- WSDualHttpBindingCollectionElement.cs
- BufferModesCollection.cs
- PassportPrincipal.cs
- Attribute.cs
- CompilerHelpers.cs
- FixedSOMTableCell.cs
- DataGridItem.cs
- DataRecordObjectView.cs
- WebPartConnectionsDisconnectVerb.cs
- SafeArrayRankMismatchException.cs
- ByteFacetDescriptionElement.cs
- FixedElement.cs
- IPGlobalProperties.cs
- WebBrowsableAttribute.cs
- FieldDescriptor.cs
- BamlMapTable.cs
- UIHelper.cs
- ThreadInterruptedException.cs
- XmlReflectionMember.cs
- DbConnectionOptions.cs
- DetailsViewRow.cs
- CatalogPart.cs
- CrossAppDomainChannel.cs
- RelationshipConverter.cs
- BindingsSection.cs
- SQLInt16.cs
- _IPv4Address.cs
- XsdBuildProvider.cs
- DataSet.cs
- StructuralCache.cs
- GZipStream.cs
- MetricEntry.cs
- WorkflowCreationContext.cs
- DataSourceSelectArguments.cs
- MultipartIdentifier.cs
- XmlSchemaSimpleType.cs
- RSAPKCS1SignatureDeformatter.cs
- UniqueEventHelper.cs
- StyleBamlTreeBuilder.cs
- XmlNamespaceManager.cs
- RemotingService.cs
- _DisconnectOverlappedAsyncResult.cs
- TextRangeEditTables.cs
- ItemsChangedEventArgs.cs
- TablePattern.cs
- GridViewCellAutomationPeer.cs
- FilterElement.cs
- webclient.cs
- SettingsSection.cs
- AuthorizationSection.cs
- FixedHighlight.cs
- MetadataUtilsSmi.cs
- MediaContext.cs
- SimpleLine.cs
- GraphicsState.cs
- Marshal.cs
- ResourcePool.cs
- BlobPersonalizationState.cs
- WebPartMenu.cs
- SqlBinder.cs
- Substitution.cs
- CngKeyBlobFormat.cs
- Console.cs
- BitmapEffectInput.cs
- Propagator.JoinPropagator.SubstitutingCloneVisitor.cs
- altserialization.cs
- DependencyPropertyKey.cs
- TraceXPathNavigator.cs
- DynamicValueConverter.cs
- XsltSettings.cs
- Themes.cs
- TextEditor.cs
- Int32Animation.cs
- SecUtil.cs
- IdentityManager.cs
- WpfXamlType.cs
- SystemGatewayIPAddressInformation.cs
- ObjectDataSourceMethodEventArgs.cs
- MouseDevice.cs
- SingleKeyFrameCollection.cs
- ImportRequest.cs
- SingleBodyParameterMessageFormatter.cs
- ColumnBinding.cs
- DomainUpDown.cs
- Pair.cs
- SafePipeHandle.cs
- IntSecurity.cs
- FixedDocumentSequencePaginator.cs
- TrackingValidationObjectDictionary.cs
- UpdateProgress.cs
- DateTimeFormatInfoScanner.cs
- LateBoundBitmapDecoder.cs
- Merger.cs
- EntityDataSourceView.cs
- ConsoleKeyInfo.cs
- WithParamAction.cs
- WorkflowItemPresenter.cs
- HttpDigestClientElement.cs
- Command.cs
- FileBasedResourceGroveler.cs