Code:
/ DotNET / DotNET / 8.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
- ToolStripSplitStackLayout.cs
- StateMachineSubscriptionManager.cs
- ParsedAttributeCollection.cs
- PrintControllerWithStatusDialog.cs
- CheckBoxBaseAdapter.cs
- CustomCategoryAttribute.cs
- Int64Converter.cs
- CqlParser.cs
- EnvelopedSignatureTransform.cs
- AsyncInvokeContext.cs
- SqlInternalConnectionSmi.cs
- TwoPhaseCommit.cs
- SqlBuffer.cs
- AnnotationStore.cs
- SystemIPv4InterfaceProperties.cs
- EndpointReference.cs
- DynamicDiscoSearcher.cs
- ListControl.cs
- SqlRetyper.cs
- DbException.cs
- WebBrowserSiteBase.cs
- SecurityTokenParametersEnumerable.cs
- SchemaTableColumn.cs
- CookieProtection.cs
- Guid.cs
- ClientTarget.cs
- RelationshipWrapper.cs
- MarshalDirectiveException.cs
- DataGridViewCell.cs
- StylusShape.cs
- CompilerTypeWithParams.cs
- ImageSourceValueSerializer.cs
- PhonemeConverter.cs
- DataGridViewCellMouseEventArgs.cs
- MaskedTextBoxDesigner.cs
- DataTableCollection.cs
- ExpressionBuilder.cs
- RightsManagementEncryptedStream.cs
- ErrorInfoXmlDocument.cs
- DataServiceContext.cs
- HtmlSelect.cs
- DataSourceProvider.cs
- UserInitiatedNavigationPermission.cs
- ToggleButton.cs
- LabelExpression.cs
- TracingConnection.cs
- precedingquery.cs
- TableHeaderCell.cs
- EmissiveMaterial.cs
- WindowsScrollBarBits.cs
- EmptyStringExpandableObjectConverter.cs
- InkCanvasSelectionAdorner.cs
- streamingZipPartStream.cs
- PageThemeParser.cs
- TableAdapterManagerGenerator.cs
- PropertyEmitterBase.cs
- XmlHierarchicalDataSourceView.cs
- DbModificationClause.cs
- ArrayWithOffset.cs
- ZipIOCentralDirectoryBlock.cs
- ContentFilePart.cs
- BamlRecordWriter.cs
- ProviderManager.cs
- WmpBitmapDecoder.cs
- UIElement.cs
- ObjectDataSourceDisposingEventArgs.cs
- DashStyle.cs
- WindowsSolidBrush.cs
- ObjectViewListener.cs
- ErrorWrapper.cs
- ToolStripEditorManager.cs
- DragDrop.cs
- LocationUpdates.cs
- VideoDrawing.cs
- SizeFConverter.cs
- ChannelServices.cs
- StructuralCache.cs
- SafeRegistryKey.cs
- XmlSchemaAny.cs
- RsaSecurityKey.cs
- SqlProviderManifest.cs
- XmlSchemaParticle.cs
- Errors.cs
- BlobPersonalizationState.cs
- CompModSwitches.cs
- NestedContainer.cs
- HttpCacheVaryByContentEncodings.cs
- ObjectQueryState.cs
- AvTrace.cs
- CalendarTable.cs
- AudioLevelUpdatedEventArgs.cs
- IfAction.cs
- NullableLongMinMaxAggregationOperator.cs
- EqualityComparer.cs
- FileDialog_Vista_Interop.cs
- ResourceExpression.cs
- securitycriticaldata.cs
- CodeTypeReferenceExpression.cs
- VariableBinder.cs
- DriveNotFoundException.cs