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
- ComponentCodeDomSerializer.cs
- cache.cs
- SizeLimitedCache.cs
- TableHeaderCell.cs
- WaitForChangedResult.cs
- MaskInputRejectedEventArgs.cs
- BeginStoryboard.cs
- ErrorStyle.cs
- AmbientEnvironment.cs
- ItemsPresenter.cs
- NotSupportedException.cs
- CharacterHit.cs
- ValueExpressions.cs
- ProcessRequestArgs.cs
- WebPartsPersonalization.cs
- DataPointer.cs
- InputBuffer.cs
- CommandHelpers.cs
- PartitionResolver.cs
- NameValuePermission.cs
- TileBrush.cs
- XmlSchema.cs
- ContextProperty.cs
- OutputCacheSettingsSection.cs
- PreloadedPackages.cs
- CacheForPrimitiveTypes.cs
- Win32.cs
- KeyValuePairs.cs
- VisualBasicSettings.cs
- PropertyDescriptor.cs
- GenericTypeParameterBuilder.cs
- UriTemplateQueryValue.cs
- AstNode.cs
- XmlEncoding.cs
- InputBindingCollection.cs
- ConsumerConnectionPoint.cs
- NonPrimarySelectionGlyph.cs
- WindowsComboBox.cs
- DataGridViewRowErrorTextNeededEventArgs.cs
- UnionCodeGroup.cs
- NavigationCommands.cs
- EntityReference.cs
- ForEachAction.cs
- DateTimeValueSerializer.cs
- ScrollBarRenderer.cs
- CompositeFontParser.cs
- CaseInsensitiveComparer.cs
- ListViewHitTestInfo.cs
- LifetimeServices.cs
- FormattedTextSymbols.cs
- RuleSettingsCollection.cs
- NullRuntimeConfig.cs
- MatrixAnimationBase.cs
- DataFormat.cs
- SymbolUsageManager.cs
- XmlSchemaSequence.cs
- UnsafeNativeMethods.cs
- Math.cs
- ControlBuilder.cs
- oledbmetadatacolumnnames.cs
- ReaderWriterLock.cs
- TextEditorThreadLocalStore.cs
- UInt64.cs
- Sql8ExpressionRewriter.cs
- XmlElementList.cs
- SR.cs
- AuthStoreRoleProvider.cs
- Condition.cs
- WindowsIPAddress.cs
- TrimSurroundingWhitespaceAttribute.cs
- XmlSecureResolver.cs
- GenericTypeParameterConverter.cs
- UnauthorizedAccessException.cs
- JoinTreeNode.cs
- SettingsBase.cs
- TlsnegoTokenAuthenticator.cs
- Win32PrintDialog.cs
- MessageQueuePermissionEntry.cs
- __ConsoleStream.cs
- ButtonFieldBase.cs
- SafeEventHandle.cs
- RestClientProxyHandler.cs
- EncoderNLS.cs
- Help.cs
- COAUTHIDENTITY.cs
- Publisher.cs
- SplashScreen.cs
- WebBrowserProgressChangedEventHandler.cs
- ToolboxItemWrapper.cs
- AsnEncodedData.cs
- Restrictions.cs
- UriExt.cs
- SHA384Managed.cs
- ExpressionVisitor.cs
- coordinatorfactory.cs
- SelectorItemAutomationPeer.cs
- NullableDecimalSumAggregationOperator.cs
- XPathNavigator.cs
- ControlBuilderAttribute.cs
- ExpanderAutomationPeer.cs