Code:
/ 4.0 / 4.0 / 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. //------------------------------------------------------------------------------ //// 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
- WinFormsUtils.cs
- DataGridHeaderBorder.cs
- PreservationFileReader.cs
- DataGridViewLinkCell.cs
- FontStretchConverter.cs
- Tablet.cs
- PropertyGridEditorPart.cs
- ClientTargetSection.cs
- ContentIterators.cs
- ObjectSpanRewriter.cs
- RijndaelManaged.cs
- WebPartZoneBaseDesigner.cs
- HelpProvider.cs
- WindowsTokenRoleProvider.cs
- tooltip.cs
- SmtpNtlmAuthenticationModule.cs
- AssemblyInfo.cs
- InternalBufferOverflowException.cs
- LocatorPart.cs
- ContextMenuStrip.cs
- Interlocked.cs
- Reference.cs
- ControlIdConverter.cs
- _NtlmClient.cs
- SynchronizedDispatch.cs
- Root.cs
- EDesignUtil.cs
- ToolStripProfessionalLowResolutionRenderer.cs
- OutputCacheModule.cs
- UIElementPropertyUndoUnit.cs
- MtomMessageEncoder.cs
- ContentElement.cs
- Transform3DGroup.cs
- CompilerGeneratedAttribute.cs
- EventLog.cs
- EndpointAddress.cs
- DeleteStoreRequest.cs
- FixedNode.cs
- FrameworkElement.cs
- OutputCacheSettings.cs
- Int16AnimationBase.cs
- ResXBuildProvider.cs
- CatalogZone.cs
- StateMachineDesignerPaint.cs
- DbDataSourceEnumerator.cs
- StorageModelBuildProvider.cs
- HwndKeyboardInputProvider.cs
- TaiwanLunisolarCalendar.cs
- DATA_BLOB.cs
- AsymmetricKeyExchangeDeformatter.cs
- CharacterMetricsDictionary.cs
- Geometry3D.cs
- InkPresenterAutomationPeer.cs
- MailHeaderInfo.cs
- TemplateControlCodeDomTreeGenerator.cs
- ServiceModelConfigurationSectionGroup.cs
- AssociatedControlConverter.cs
- QueryOutputWriterV1.cs
- TimelineGroup.cs
- RegistryHandle.cs
- Vector3DAnimationBase.cs
- CallbackCorrelationInitializer.cs
- SqlDataSourceFilteringEventArgs.cs
- IDQuery.cs
- Convert.cs
- CurrentChangingEventArgs.cs
- CellConstant.cs
- Update.cs
- RuleSettings.cs
- Rect.cs
- XhtmlBasicControlAdapter.cs
- TreeViewCancelEvent.cs
- RichTextBox.cs
- DictionaryChange.cs
- PTUtility.cs
- DataGridColumnStyleMappingNameEditor.cs
- SafeNativeMethods.cs
- EntityTypeEmitter.cs
- RegexFCD.cs
- ConfigXmlText.cs
- Glyph.cs
- initElementDictionary.cs
- FixedSOMPageConstructor.cs
- ServicePointManagerElement.cs
- HwndSource.cs
- TransformConverter.cs
- Brushes.cs
- ThrowHelper.cs
- ProfilePropertySettingsCollection.cs
- OdbcCommand.cs
- InvalidFilterCriteriaException.cs
- PasswordDeriveBytes.cs
- OrderedDictionary.cs
- SplashScreenNativeMethods.cs
- SystemUdpStatistics.cs
- EventLogPropertySelector.cs
- NewArrayExpression.cs
- HandlerBase.cs
- XmlMapping.cs
- RuntimeConfig.cs