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
- MergablePropertyAttribute.cs
- HttpsTransportElement.cs
- ServiceCredentialsElement.cs
- ListArgumentProvider.cs
- SchemaTypeEmitter.cs
- MenuItem.cs
- InstanceDataCollection.cs
- sqlstateclientmanager.cs
- PeerName.cs
- TextWriterEngine.cs
- EdmToObjectNamespaceMap.cs
- ItemAutomationPeer.cs
- Type.cs
- MailAddressCollection.cs
- RecognizerInfo.cs
- InstanceContextManager.cs
- ServiceDurableInstanceContextProvider.cs
- AutoGeneratedField.cs
- _IPv6Address.cs
- Control.cs
- HttpModuleCollection.cs
- EventBookmark.cs
- XmlSerializableWriter.cs
- DesignerAdRotatorAdapter.cs
- contentDescriptor.cs
- PauseStoryboard.cs
- StreamingContext.cs
- AccessViolationException.cs
- Pointer.cs
- BoundColumn.cs
- ScrollViewerAutomationPeer.cs
- RSATokenProvider.cs
- RightsManagementInformation.cs
- MDIControlStrip.cs
- Binding.cs
- SqlBuffer.cs
- PhysicalFontFamily.cs
- VariantWrapper.cs
- StringToken.cs
- LoadGrammarCompletedEventArgs.cs
- SoapSchemaExporter.cs
- Decimal.cs
- Internal.cs
- TriState.cs
- RegisteredScript.cs
- MessageSecurityTokenVersion.cs
- WmpBitmapEncoder.cs
- EventProviderTraceListener.cs
- JulianCalendar.cs
- DbConnectionStringBuilder.cs
- PrintDocument.cs
- PartitionedStream.cs
- BinHexEncoder.cs
- ListDictionary.cs
- Point4DValueSerializer.cs
- BuildProvider.cs
- Timer.cs
- XmlSchemaSimpleContent.cs
- _AutoWebProxyScriptHelper.cs
- Vector3DAnimationBase.cs
- Control.cs
- SqlUDTStorage.cs
- Icon.cs
- AutomationAttributeInfo.cs
- TagMapInfo.cs
- metadatamappinghashervisitor.hashsourcebuilder.cs
- ScriptManager.cs
- mongolianshape.cs
- DetailsViewRow.cs
- SerializableTypeCodeDomSerializer.cs
- SelectionWordBreaker.cs
- IPGlobalProperties.cs
- WebBrowserSiteBase.cs
- SamlAudienceRestrictionCondition.cs
- ArgumentElement.cs
- ConfigXmlComment.cs
- CaseExpr.cs
- ScriptDescriptor.cs
- NameValueCollection.cs
- SqlReorderer.cs
- ConfigurationHelpers.cs
- PackUriHelper.cs
- translator.cs
- RotateTransform.cs
- InstanceView.cs
- SqlConnectionPoolGroupProviderInfo.cs
- WindowsToolbarAsMenu.cs
- ServerIdentity.cs
- BinaryReader.cs
- LightweightEntityWrapper.cs
- NetworkStream.cs
- RoleManagerEventArgs.cs
- ScrollItemProviderWrapper.cs
- DataListItem.cs
- WebPartCatalogAddVerb.cs
- SweepDirectionValidation.cs
- TransformGroup.cs
- SwitchAttribute.cs
- SurrogateEncoder.cs
- NetworkStream.cs