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
- ClientRuntimeConfig.cs
- Floater.cs
- ObjectDisposedException.cs
- DataGridViewTextBoxEditingControl.cs
- SHA512.cs
- infer.cs
- ColorContextHelper.cs
- Clock.cs
- AvTraceDetails.cs
- StateMachineHelpers.cs
- XmlRootAttribute.cs
- PDBReader.cs
- IndentedWriter.cs
- StringAttributeCollection.cs
- AssociationSet.cs
- IsolationInterop.cs
- HandleInitializationContext.cs
- WorkflowDataContext.cs
- KnownBoxes.cs
- StopStoryboard.cs
- DataGridGeneralPage.cs
- CatalogPart.cs
- FormViewModeEventArgs.cs
- FlowDocumentScrollViewerAutomationPeer.cs
- MachineKeyValidationConverter.cs
- SectionVisual.cs
- WinFormsSpinner.cs
- AuthenticatedStream.cs
- CodeConditionStatement.cs
- prefixendpointaddressmessagefiltertable.cs
- XmlSchemaAttributeGroupRef.cs
- CustomCredentialPolicy.cs
- EntityClassGenerator.cs
- DataGridViewCellStyleConverter.cs
- EnumMember.cs
- PackageDigitalSignatureManager.cs
- PackageDigitalSignatureManager.cs
- WebRequestModuleElementCollection.cs
- ActiveDocumentEvent.cs
- _ProxyRegBlob.cs
- CodeExpressionStatement.cs
- DisplayMemberTemplateSelector.cs
- UserNameSecurityTokenProvider.cs
- StringSorter.cs
- WindowProviderWrapper.cs
- X509SubjectKeyIdentifierClause.cs
- DayRenderEvent.cs
- XDRSchema.cs
- ApplicationInfo.cs
- DesignOnlyAttribute.cs
- SafeLocalAllocation.cs
- Renderer.cs
- UnitControl.cs
- ComponentEvent.cs
- ListSortDescriptionCollection.cs
- DataViewManager.cs
- CustomGrammar.cs
- SafeMILHandle.cs
- GetPageCompletedEventArgs.cs
- RunInstallerAttribute.cs
- ExpressionParser.cs
- Expander.cs
- CodeLabeledStatement.cs
- ReadOnlyDataSource.cs
- QilScopedVisitor.cs
- SwitchExpression.cs
- ModifierKeysConverter.cs
- EntityDataSourceConfigureObjectContext.cs
- CacheMemory.cs
- AssemblyInfo.cs
- QuaternionValueSerializer.cs
- DBCSCodePageEncoding.cs
- XmlSchemaObjectTable.cs
- ResumeStoryboard.cs
- GraphicsContainer.cs
- PanelStyle.cs
- DetailsViewPageEventArgs.cs
- FrameworkContentElement.cs
- HwndKeyboardInputProvider.cs
- MobileErrorInfo.cs
- WmiInstallComponent.cs
- HostUtils.cs
- VScrollBar.cs
- GPRECT.cs
- SchemaSetCompiler.cs
- ListControlStringCollectionEditor.cs
- Math.cs
- DocumentViewerConstants.cs
- SystemResources.cs
- TextOutput.cs
- ProxyGenerator.cs
- NativeMethods.cs
- RelatedImageListAttribute.cs
- WebPartHelpVerb.cs
- MessageSecurityOverMsmqElement.cs
- AssemblyNameProxy.cs
- SymDocumentType.cs
- ListBoxChrome.cs
- RuntimeHandles.cs
- FixUp.cs