Code:
/ FXUpdate3074 / FXUpdate3074 / 1.1 / untmp / 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.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- DrawingAttributesDefaultValueFactory.cs
- EventPropertyMap.cs
- Parser.cs
- BrowserPolicyValidator.cs
- MultilineStringConverter.cs
- SqlInternalConnectionTds.cs
- ParallelTimeline.cs
- SafeFileMappingHandle.cs
- KnownColorTable.cs
- PaginationProgressEventArgs.cs
- PaperSource.cs
- WebControlsSection.cs
- EpmCustomContentWriterNodeData.cs
- QuaternionKeyFrameCollection.cs
- RepeaterItem.cs
- ApplicationId.cs
- SymDocumentType.cs
- FloatUtil.cs
- MouseGestureValueSerializer.cs
- XComponentModel.cs
- Win32SafeHandles.cs
- DataGridViewCellToolTipTextNeededEventArgs.cs
- ClientTarget.cs
- ExpandedWrapper.cs
- RenderData.cs
- WindowsTitleBar.cs
- ListenerBinder.cs
- BitmapInitialize.cs
- ContentPlaceHolder.cs
- CacheDependency.cs
- Descriptor.cs
- AvtEvent.cs
- ZipIOLocalFileHeader.cs
- WebPermission.cs
- FlowDocumentPaginator.cs
- OdbcStatementHandle.cs
- XmlConvert.cs
- StylusLogic.cs
- HtmlWindowCollection.cs
- BaseConfigurationRecord.cs
- ScriptIgnoreAttribute.cs
- ButtonBaseAutomationPeer.cs
- AuthenticationServiceManager.cs
- PropertyChangedEventManager.cs
- ImageDrawing.cs
- LinkedResource.cs
- FixedSOMPage.cs
- MatrixCamera.cs
- RegistryPermission.cs
- MLangCodePageEncoding.cs
- EventManager.cs
- Win32.cs
- DeobfuscatingStream.cs
- ParsedAttributeCollection.cs
- ToolStrip.cs
- SmtpReplyReaderFactory.cs
- GradientStop.cs
- DynamicUpdateCommand.cs
- CaseInsensitiveOrdinalStringComparer.cs
- XmlBinaryReader.cs
- Win32Native.cs
- PopupRootAutomationPeer.cs
- WriteFileContext.cs
- SuppressIldasmAttribute.cs
- Encoding.cs
- SmtpClient.cs
- Thread.cs
- ClientScriptManagerWrapper.cs
- AssertFilter.cs
- HttpValueCollection.cs
- ContextMenu.cs
- SmiEventSink.cs
- RelationshipSet.cs
- CellRelation.cs
- DbgUtil.cs
- XmlQueryRuntime.cs
- MouseCaptureWithinProperty.cs
- MobileControlsSection.cs
- XmlUTF8TextWriter.cs
- MulticastDelegate.cs
- PanelContainerDesigner.cs
- ContainerParaClient.cs
- OutputWindow.cs
- AppLevelCompilationSectionCache.cs
- NameValueFileSectionHandler.cs
- WebBrowsableAttribute.cs
- StringResourceManager.cs
- WindowProviderWrapper.cs
- DeploymentExceptionMapper.cs
- Registry.cs
- PathSegmentCollection.cs
- ClassDataContract.cs
- ConfigurationManagerInternal.cs
- ValidationError.cs
- DynamicFilter.cs
- PackageProperties.cs
- HierarchicalDataSourceConverter.cs
- MessageDecoder.cs
- Facet.cs
- SoapObjectWriter.cs