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
- UiaCoreApi.cs
- iisPickupDirectory.cs
- DataListGeneralPage.cs
- LogPolicy.cs
- ConnectionManagementSection.cs
- DataGridViewMethods.cs
- ClientTarget.cs
- FontCollection.cs
- DataServiceRequestOfT.cs
- ProjectionPath.cs
- ELinqQueryState.cs
- ErasingStroke.cs
- SelectionService.cs
- RtfFormatStack.cs
- HideDisabledControlAdapter.cs
- TempEnvironment.cs
- ToolStripContentPanelDesigner.cs
- StructuralCache.cs
- WizardSideBarListControlItemEventArgs.cs
- UnionCqlBlock.cs
- UnsafeNativeMethods.cs
- NameValueConfigurationCollection.cs
- InputLangChangeEvent.cs
- FieldNameLookup.cs
- LoginName.cs
- KeySplineConverter.cs
- SmtpReplyReader.cs
- AutomationPropertyInfo.cs
- HttpCacheParams.cs
- TimeEnumHelper.cs
- PackageRelationshipSelector.cs
- Query.cs
- AdditionalEntityFunctions.cs
- SimpleType.cs
- TimerEventSubscription.cs
- BackgroundFormatInfo.cs
- SqlXmlStorage.cs
- WebControl.cs
- Focus.cs
- XmlSchemaAppInfo.cs
- EntitySqlQueryCacheEntry.cs
- XPathMessageFilterTable.cs
- UrlMappingCollection.cs
- EncoderParameters.cs
- EventEntry.cs
- UnsafeNativeMethods.cs
- TdsParserSafeHandles.cs
- XmlTextReaderImpl.cs
- IODescriptionAttribute.cs
- Stylesheet.cs
- FontInfo.cs
- StringArrayConverter.cs
- MsmqInputChannelBase.cs
- StoreContentChangedEventArgs.cs
- CodeDOMUtility.cs
- AxHost.cs
- Win32KeyboardDevice.cs
- ActionMismatchAddressingException.cs
- UnsafeNativeMethods.cs
- ComponentSerializationService.cs
- ReflectionUtil.cs
- ZipIOExtraFieldPaddingElement.cs
- DataTableNewRowEvent.cs
- HwndStylusInputProvider.cs
- COMException.cs
- TypeDependencyAttribute.cs
- CollaborationHelperFunctions.cs
- IntegrationExceptionEventArgs.cs
- LocalBuilder.cs
- MultiByteCodec.cs
- CredentialSelector.cs
- ImageListStreamer.cs
- Lasso.cs
- OletxResourceManager.cs
- Signature.cs
- BitmapEffect.cs
- DataGridViewCellParsingEventArgs.cs
- HandlerFactoryWrapper.cs
- OutputCacheProviderCollection.cs
- ResizeGrip.cs
- LifetimeServices.cs
- HostingEnvironmentSection.cs
- InstanceNormalEvent.cs
- LinkClickEvent.cs
- AnnotationStore.cs
- DataGrid.cs
- CheckBoxStandardAdapter.cs
- Axis.cs
- ListParagraph.cs
- Base64Encoder.cs
- DynamicDataRouteHandler.cs
- PropertyItem.cs
- Math.cs
- DataErrorValidationRule.cs
- SplitterEvent.cs
- DesignerDeviceConfig.cs
- XmlSerializerNamespaces.cs
- RemoteDebugger.cs
- ItemCollection.cs
- TakeQueryOptionExpression.cs