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
- IPeerNeighbor.cs
- COM2IDispatchConverter.cs
- Cursors.cs
- SchemaImporterExtensionsSection.cs
- SHA1Managed.cs
- ToolBarOverflowPanel.cs
- PointF.cs
- DBCommand.cs
- CookieProtection.cs
- InvokePattern.cs
- Stream.cs
- ComboBox.cs
- ProtectedProviderSettings.cs
- BinaryWriter.cs
- MethodToken.cs
- CacheEntry.cs
- UnsafeNetInfoNativeMethods.cs
- TargetControlTypeCache.cs
- CookieParameter.cs
- NodeInfo.cs
- Message.cs
- _CacheStreams.cs
- Propagator.ExtentPlaceholderCreator.cs
- LinkLabel.cs
- MissingSatelliteAssemblyException.cs
- MobileResource.cs
- PageAdapter.cs
- ManagementPath.cs
- StringAnimationBase.cs
- SingleKeyFrameCollection.cs
- UrlRoutingModule.cs
- FeatureSupport.cs
- HtmlTernaryTree.cs
- StringUtil.cs
- SafeEventLogWriteHandle.cs
- TextDecorationCollection.cs
- TableItemProviderWrapper.cs
- UInt16Converter.cs
- TemplateBamlTreeBuilder.cs
- ResponseStream.cs
- SqlClientPermission.cs
- BrushMappingModeValidation.cs
- NumericPagerField.cs
- DefinitionUpdate.cs
- WSSecurityTokenSerializer.cs
- SqlTriggerAttribute.cs
- ParameterModifier.cs
- AttributeCollection.cs
- WinFormsSecurity.cs
- WorkflowDesigner.cs
- CodeValidator.cs
- FlowPosition.cs
- PropertyEmitterBase.cs
- EnumValidator.cs
- MultipleCopiesCollection.cs
- DiscoveryRequestHandler.cs
- InitializeCorrelation.cs
- SqlDataSourceSelectingEventArgs.cs
- XAMLParseException.cs
- PreloadedPackages.cs
- ProfileParameter.cs
- XPathNavigator.cs
- ValidationRuleCollection.cs
- WindowInteractionStateTracker.cs
- CollectionMarkupSerializer.cs
- XPathAncestorIterator.cs
- TemplateControlBuildProvider.cs
- ProjectedSlot.cs
- CompilationUtil.cs
- XmlILIndex.cs
- AuthenticationSection.cs
- ExpressionLexer.cs
- AlphabeticalEnumConverter.cs
- PageCodeDomTreeGenerator.cs
- ChildrenQuery.cs
- ProtocolsConfigurationEntry.cs
- SizeF.cs
- WebControlAdapter.cs
- VerificationException.cs
- MetabaseSettings.cs
- ContentFileHelper.cs
- SpeechDetectedEventArgs.cs
- OutputCache.cs
- DescriptionAttribute.cs
- MgmtResManager.cs
- NameHandler.cs
- ScriptModule.cs
- PKCS1MaskGenerationMethod.cs
- LicenseException.cs
- StorageInfo.cs
- NumberFunctions.cs
- BaseCollection.cs
- PowerModeChangedEventArgs.cs
- Domain.cs
- DataGridViewColumnConverter.cs
- DataKey.cs
- IPPacketInformation.cs
- SelectorAutomationPeer.cs
- ArrayItemValue.cs
- WeakReferenceKey.cs