Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / whidbey / netfxsp / 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. // //----------------------------------------------------------------------------- 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.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- TemplateAction.cs
- ProjectionCamera.cs
- CompositeActivityTypeDescriptor.cs
- InvokeMethod.cs
- KeyedCollection.cs
- NameObjectCollectionBase.cs
- ComAdminInterfaces.cs
- BitmapEffectDrawing.cs
- Vector.cs
- StandardToolWindows.cs
- DecimalAnimation.cs
- _ConnectOverlappedAsyncResult.cs
- SwitchAttribute.cs
- Size.cs
- Font.cs
- OrthographicCamera.cs
- PageTheme.cs
- DateTimeSerializationSection.cs
- DataSourceProvider.cs
- ActivityDefaults.cs
- MessageBox.cs
- ListenerElementsCollection.cs
- MarkupWriter.cs
- TempFiles.cs
- DocumentSequence.cs
- EdmTypeAttribute.cs
- CultureInfoConverter.cs
- HotSpot.cs
- GenericParameterDataContract.cs
- SequentialWorkflowHeaderFooter.cs
- AspNetSynchronizationContext.cs
- DataColumnChangeEvent.cs
- CryptoConfig.cs
- SiteOfOriginContainer.cs
- ConnectionManagementElement.cs
- DebugView.cs
- LateBoundBitmapDecoder.cs
- MaskedTextBox.cs
- TextContainerChangedEventArgs.cs
- Int64AnimationBase.cs
- AppDomainShutdownMonitor.cs
- DataObjectSettingDataEventArgs.cs
- WebServiceParameterData.cs
- SchemaTableOptionalColumn.cs
- SubclassTypeValidator.cs
- Frame.cs
- FormatPage.cs
- Context.cs
- IconHelper.cs
- SqlGenericUtil.cs
- UIElement.cs
- SchemaCollectionCompiler.cs
- StringPropertyBuilder.cs
- VirtualDirectoryMappingCollection.cs
- TrackingMemoryStreamFactory.cs
- PipelineModuleStepContainer.cs
- MetabaseSettings.cs
- SoapSchemaImporter.cs
- DataControlImageButton.cs
- StatusBarDrawItemEvent.cs
- mansign.cs
- ContractCodeDomInfo.cs
- EventPropertyMap.cs
- WebRequest.cs
- RegexReplacement.cs
- CompilerParameters.cs
- CompModHelpers.cs
- StringToken.cs
- MasterPageBuildProvider.cs
- Label.cs
- AssociationTypeEmitter.cs
- ObjectStorage.cs
- AsymmetricKeyExchangeFormatter.cs
- StringAnimationUsingKeyFrames.cs
- ToggleProviderWrapper.cs
- ProfileInfo.cs
- RecommendedAsConfigurableAttribute.cs
- InvokeWebService.cs
- TextEffect.cs
- RadioButtonList.cs
- CellQuery.cs
- HttpListener.cs
- ResourceType.cs
- SimpleApplicationHost.cs
- Switch.cs
- TrustManager.cs
- MenuItem.cs
- FormsIdentity.cs
- COM2EnumConverter.cs
- ListViewItemMouseHoverEvent.cs
- RecordsAffectedEventArgs.cs
- ReachDocumentPageSerializer.cs
- ObjectListCommandCollection.cs
- Script.cs
- DesignerExtenders.cs
- UrlMappingsModule.cs
- DetailsViewRow.cs
- FaultPropagationRecord.cs
- WebServiceHandlerFactory.cs
- PageTextBox.cs