Code:
/ DotNET / DotNET / 8.0 / untmp / whidbey / REDBITS / 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); } } }
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- IIS7UserPrincipal.cs
- IFlowDocumentViewer.cs
- XamlSerializationHelper.cs
- ServiceRoute.cs
- NumericExpr.cs
- MonitoringDescriptionAttribute.cs
- HttpCookie.cs
- MessagingActivityHelper.cs
- DisableDpiAwarenessAttribute.cs
- CodeDelegateCreateExpression.cs
- RotationValidation.cs
- VectorAnimationBase.cs
- DataGridRowsPresenter.cs
- XPathEmptyIterator.cs
- RedBlackList.cs
- WebPartDisplayModeEventArgs.cs
- MemberPath.cs
- Int32Converter.cs
- Errors.cs
- ActiveDocumentEvent.cs
- GlyphInfoList.cs
- TreeViewAutomationPeer.cs
- CalendarDayButton.cs
- SpeechSynthesizer.cs
- XmlDesignerDataSourceView.cs
- MatchingStyle.cs
- AdCreatedEventArgs.cs
- ExchangeUtilities.cs
- TableLayoutCellPaintEventArgs.cs
- Quaternion.cs
- OdbcHandle.cs
- SerializerDescriptor.cs
- ListViewEditEventArgs.cs
- DataFormats.cs
- SecurityPermission.cs
- Matrix.cs
- IIS7UserPrincipal.cs
- IndependentAnimationStorage.cs
- WebControl.cs
- SQLDoubleStorage.cs
- TouchFrameEventArgs.cs
- FixUp.cs
- HttpResponseInternalBase.cs
- EnumUnknown.cs
- Line.cs
- BitConverter.cs
- ManagementObjectSearcher.cs
- StateDesignerConnector.cs
- TemplateDefinition.cs
- ActivityCodeDomReferenceService.cs
- XPathAncestorIterator.cs
- MetabaseSettings.cs
- DataStreamFromComStream.cs
- RemotingService.cs
- GlobalProxySelection.cs
- FrameworkContentElement.cs
- OwnerDrawPropertyBag.cs
- MaterialCollection.cs
- InvocationExpression.cs
- RoleServiceManager.cs
- DataGridViewButtonColumn.cs
- BevelBitmapEffect.cs
- DBCommand.cs
- NavigatorInput.cs
- Cursors.cs
- TextDecorationCollection.cs
- FilterException.cs
- HttpListenerRequestTraceRecord.cs
- ProcessProtocolHandler.cs
- Walker.cs
- _LoggingObject.cs
- XmlRawWriter.cs
- NameValueCollection.cs
- PublisherMembershipCondition.cs
- SingleAnimation.cs
- TimeoutException.cs
- SourceFileInfo.cs
- VirtualPathUtility.cs
- XmlSchemaNotation.cs
- BufferedGraphicsManager.cs
- XmlComment.cs
- SafeLibraryHandle.cs
- DiscoveryDocumentSerializer.cs
- DispatcherHookEventArgs.cs
- ContextMenuStrip.cs
- XmlSchemaValidator.cs
- StreamingContext.cs
- ExecutionContext.cs
- ConfigurationErrorsException.cs
- CompleteWizardStep.cs
- DataGridColumn.cs
- HttpListenerResponse.cs
- ListViewDeletedEventArgs.cs
- BaseTemplateCodeDomTreeGenerator.cs
- ResponseStream.cs
- FilterQueryOptionExpression.cs
- comcontractssection.cs
- TableSectionStyle.cs
- PrePrepareMethodAttribute.cs
- XmlSchemaObjectTable.cs