Code:
/ FX-1434 / FX-1434 / 1.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
- ObjectViewListener.cs
- _NegoState.cs
- Authorization.cs
- ProtocolsConfiguration.cs
- ScriptBehaviorDescriptor.cs
- LinearGradientBrush.cs
- ColumnMapCopier.cs
- PhysicalOps.cs
- Point3DCollection.cs
- MouseActionConverter.cs
- ToolStripGrip.cs
- Style.cs
- RequestSecurityTokenForGetBrowserToken.cs
- LineBreakRecord.cs
- CodeDomConfigurationHandler.cs
- QueryConverter.cs
- CommandPlan.cs
- SplitterPanel.cs
- MetadataPropertyvalue.cs
- XPathDocumentNavigator.cs
- InputElement.cs
- MetadataItem_Static.cs
- AssemblyFilter.cs
- ScriptingSectionGroup.cs
- SizeChangedEventArgs.cs
- InternalReceiveMessage.cs
- EntityDataSourceQueryBuilder.cs
- IndexedString.cs
- RecognizerStateChangedEventArgs.cs
- IndicShape.cs
- EventLogPermissionAttribute.cs
- BuildResult.cs
- PipelineModuleStepContainer.cs
- PtsCache.cs
- MultiBindingExpression.cs
- EventLogPermissionAttribute.cs
- KeyValueSerializer.cs
- Base64Encoder.cs
- TextElement.cs
- SecurityTokenProvider.cs
- _NTAuthentication.cs
- PointCollection.cs
- ValidationErrorCollection.cs
- ObfuscateAssemblyAttribute.cs
- ObjectDataSourceMethodEventArgs.cs
- SoapHeaderException.cs
- HostingEnvironmentException.cs
- IndexedString.cs
- Propagator.cs
- RowSpanVector.cs
- MessageQueueInstaller.cs
- UrlMappingsSection.cs
- FrameworkElementAutomationPeer.cs
- MediaSystem.cs
- ColumnPropertiesGroup.cs
- MinMaxParagraphWidth.cs
- StoragePropertyMapping.cs
- GcSettings.cs
- TextEffectResolver.cs
- LinkConverter.cs
- TagPrefixInfo.cs
- LinearKeyFrames.cs
- SqlDelegatedTransaction.cs
- SingleResultAttribute.cs
- CompiledXpathExpr.cs
- LocalizationComments.cs
- RSATokenProvider.cs
- DependencyObject.cs
- AnimationLayer.cs
- MenuCommandService.cs
- MethodBuilderInstantiation.cs
- MetabaseSettingsIis7.cs
- EntityClassGenerator.cs
- CompositeKey.cs
- BaseUriWithWildcard.cs
- SafeArrayTypeMismatchException.cs
- XsltConvert.cs
- SchemaInfo.cs
- LZCodec.cs
- BamlMapTable.cs
- Normalization.cs
- GridItemProviderWrapper.cs
- TCPClient.cs
- XmlTypeAttribute.cs
- UserControl.cs
- SignedXml.cs
- Menu.cs
- DataStorage.cs
- SafeMILHandleMemoryPressure.cs
- FormsIdentity.cs
- BackgroundFormatInfo.cs
- AliasExpr.cs
- DefaultProxySection.cs
- HttpGetClientProtocol.cs
- XmlSchemaAttributeGroupRef.cs
- AuthenticationSection.cs
- RuleProcessor.cs
- InputScopeNameConverter.cs
- AddInStore.cs
- ButtonBase.cs