Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / xsp / System / Web / UI / ParseChildrenAsPropertiesAttribute.cs / 1305376 / 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)] 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.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- EventRouteFactory.cs
- BitStream.cs
- ModelVisual3D.cs
- ExpressionList.cs
- ActivityExecutorOperation.cs
- WorkflowOwnerAsyncResult.cs
- KeyValueConfigurationElement.cs
- XPathException.cs
- SingleAnimationUsingKeyFrames.cs
- Int32Storage.cs
- PingReply.cs
- COM2IDispatchConverter.cs
- AssemblyNameProxy.cs
- BitmapFrameEncode.cs
- ListViewContainer.cs
- Timer.cs
- PixelFormatConverter.cs
- CodeEntryPointMethod.cs
- ColumnMapCopier.cs
- RelatedView.cs
- PropertyDescriptorGridEntry.cs
- PrimitiveType.cs
- HttpListenerTimeoutManager.cs
- DataAdapter.cs
- AttachedAnnotation.cs
- MarkupCompiler.cs
- DataGridViewBindingCompleteEventArgs.cs
- LowerCaseStringConverter.cs
- FtpRequestCacheValidator.cs
- XmlSchemaRedefine.cs
- DecoratedNameAttribute.cs
- AspNetPartialTrustHelpers.cs
- FormsAuthenticationUserCollection.cs
- RemotingServices.cs
- SoapObjectReader.cs
- _DigestClient.cs
- JapaneseLunisolarCalendar.cs
- ContentPathSegment.cs
- DynamicPropertyHolder.cs
- ExpressionValueEditor.cs
- HtmlToClrEventProxy.cs
- SQLMembershipProvider.cs
- GraphicsPathIterator.cs
- ListenerAdaptersInstallComponent.cs
- SuppressMergeCheckAttribute.cs
- ListCollectionView.cs
- X509Extension.cs
- DateTimeOffset.cs
- RemotingServices.cs
- ScriptControlManager.cs
- NameValuePair.cs
- PersonalizationAdministration.cs
- BrowserCapabilitiesFactory.cs
- WebPartMinimizeVerb.cs
- DataRowComparer.cs
- DesignerTransactionCloseEvent.cs
- SqlUtil.cs
- SoapTypeAttribute.cs
- WhitespaceRuleLookup.cs
- RegexStringValidator.cs
- CodeDomComponentSerializationService.cs
- DateTimeUtil.cs
- XmlCDATASection.cs
- TextServicesDisplayAttribute.cs
- TransformDescriptor.cs
- wgx_commands.cs
- XmlAutoDetectWriter.cs
- TextHidden.cs
- MatrixTransform3D.cs
- DecimalAnimation.cs
- DigitalSignatureProvider.cs
- FormsAuthenticationEventArgs.cs
- HostingEnvironment.cs
- GridEntryCollection.cs
- TextShapeableCharacters.cs
- IChannel.cs
- DelegateCompletionCallbackWrapper.cs
- LambdaCompiler.Expressions.cs
- TextRangeProviderWrapper.cs
- BitSet.cs
- AssemblyAttributes.cs
- BindingOperations.cs
- CommonObjectSecurity.cs
- InternalEnumValidatorAttribute.cs
- OracleRowUpdatedEventArgs.cs
- CompositionAdorner.cs
- FigureHelper.cs
- TripleDES.cs
- InvariantComparer.cs
- WebPartEditorCancelVerb.cs
- IntegerValidatorAttribute.cs
- IntSecurity.cs
- DataGridViewMethods.cs
- WmpBitmapDecoder.cs
- SourceSwitch.cs
- PathSegment.cs
- TypeSource.cs
- XmlSiteMapProvider.cs
- HtmlForm.cs
- KeyFrames.cs