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
- DataProtection.cs
- FlatButtonAppearance.cs
- ModuleBuilderData.cs
- Point.cs
- DockingAttribute.cs
- SpeechEvent.cs
- GeometryModel3D.cs
- ThumbAutomationPeer.cs
- KeyManager.cs
- Avt.cs
- ProfileSection.cs
- PropertyConverter.cs
- WindowsListViewItem.cs
- WebBrowserNavigatedEventHandler.cs
- AnchoredBlock.cs
- PersonalizableAttribute.cs
- Encoder.cs
- CssStyleCollection.cs
- BuiltInExpr.cs
- CompilationRelaxations.cs
- ScrollItemPattern.cs
- ReadOnlyMetadataCollection.cs
- Int32Converter.cs
- PrinterSettings.cs
- FileLevelControlBuilderAttribute.cs
- HashStream.cs
- XslTransform.cs
- EndpointIdentityConverter.cs
- EntityDataSourceWrapperCollection.cs
- UntypedNullExpression.cs
- ImageSource.cs
- TextParagraphProperties.cs
- PropertyEmitterBase.cs
- MergeFilterQuery.cs
- MobileResource.cs
- SafeLibraryHandle.cs
- GregorianCalendar.cs
- DrawingAttributeSerializer.cs
- XmlQueryCardinality.cs
- RegexBoyerMoore.cs
- Funcletizer.cs
- BindingCompleteEventArgs.cs
- HttpInputStream.cs
- HttpProtocolImporter.cs
- DocumentGridPage.cs
- CodeSubDirectory.cs
- CodeDomDesignerLoader.cs
- Int32Storage.cs
- EraserBehavior.cs
- AnnotationResourceChangedEventArgs.cs
- AdapterUtil.cs
- DataGridViewRowContextMenuStripNeededEventArgs.cs
- FunctionGenerator.cs
- indexingfiltermarshaler.cs
- ApplicationManager.cs
- DataGridPreparingCellForEditEventArgs.cs
- ObjectAnimationUsingKeyFrames.cs
- OleDbParameter.cs
- HttpRawResponse.cs
- TypeLibConverter.cs
- Font.cs
- FormViewPagerRow.cs
- objectquery_tresulttype.cs
- GPRECTF.cs
- TransformedBitmap.cs
- CustomAttributeSerializer.cs
- StringFunctions.cs
- ToolStripContentPanel.cs
- SecurityPolicySection.cs
- MimeWriter.cs
- AppDomain.cs
- WebPartZoneDesigner.cs
- FileRecordSequenceCompletedAsyncResult.cs
- VisualCollection.cs
- TraceListener.cs
- MoveSizeWinEventHandler.cs
- RSAPKCS1KeyExchangeDeformatter.cs
- MouseEventArgs.cs
- FontStyleConverter.cs
- RadioButtonPopupAdapter.cs
- DynamicObject.cs
- HtmlTableRow.cs
- SuppressIldasmAttribute.cs
- SchemaElementLookUpTable.cs
- initElementDictionary.cs
- ExtensibleClassFactory.cs
- ObjectStateManagerMetadata.cs
- EdmType.cs
- PropertyMapper.cs
- panel.cs
- URLEditor.cs
- WinEventTracker.cs
- PeerContact.cs
- XmlAttributeHolder.cs
- GeneralTransformGroup.cs
- EventEntry.cs
- Label.cs
- SqlDataSourceConfigureFilterForm.cs
- EntityDataSourceView.cs
- FrameworkReadOnlyPropertyMetadata.cs