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
- QuestionEventArgs.cs
- DockPanel.cs
- NaturalLanguageHyphenator.cs
- ProvidePropertyAttribute.cs
- AuthenticationModuleElementCollection.cs
- DnsPermission.cs
- CheckBoxField.cs
- TimeStampChecker.cs
- SyntaxCheck.cs
- MouseEventArgs.cs
- KoreanLunisolarCalendar.cs
- Variable.cs
- HwndHost.cs
- QilNode.cs
- GetPageCompletedEventArgs.cs
- TextRangeSerialization.cs
- AutomationPropertyInfo.cs
- ViewLoader.cs
- WebPartDisplayModeCancelEventArgs.cs
- dbenumerator.cs
- ConnectionPointCookie.cs
- Menu.cs
- BaseValidator.cs
- ReliableChannelFactory.cs
- SendActivityDesignerTheme.cs
- IgnoreFileBuildProvider.cs
- ContractComponent.cs
- PointValueSerializer.cs
- MenuCommandService.cs
- XPathDescendantIterator.cs
- CapabilitiesState.cs
- DodSequenceMerge.cs
- PenCursorManager.cs
- _CommandStream.cs
- _ReceiveMessageOverlappedAsyncResult.cs
- DataServiceRequest.cs
- RemoveStoryboard.cs
- SafeNativeMethods.cs
- SmtpNetworkElement.cs
- AttributeData.cs
- CngProvider.cs
- WebServiceResponse.cs
- XmlSignatureManifest.cs
- FixedDSBuilder.cs
- TemplateField.cs
- XmlWrappingReader.cs
- StringFormat.cs
- Group.cs
- DataGridViewTextBoxEditingControl.cs
- TransformDescriptor.cs
- ScriptMethodAttribute.cs
- RedirectionProxy.cs
- TableRowCollection.cs
- Executor.cs
- WebPartMenu.cs
- SuppressMergeCheckAttribute.cs
- RelationshipEndCollection.cs
- TextBounds.cs
- BaseDataList.cs
- TextUtf8RawTextWriter.cs
- PackageRelationship.cs
- Matrix.cs
- Matrix3DValueSerializer.cs
- XslCompiledTransform.cs
- EndEvent.cs
- PeoplePickerWrapper.cs
- EncoderExceptionFallback.cs
- XmlNodeChangedEventArgs.cs
- ContentHostHelper.cs
- RepeatEnumerable.cs
- ContextProperty.cs
- CompilerScopeManager.cs
- HelloMessageCD1.cs
- DeviceContexts.cs
- CategoriesDocument.cs
- ErrorsHelper.cs
- PointLight.cs
- DataGrid.cs
- SByteStorage.cs
- FollowerQueueCreator.cs
- IgnoreFlushAndCloseStream.cs
- PrivateUnsafeNativeCompoundFileMethods.cs
- InlineUIContainer.cs
- DesignerTransactionCloseEvent.cs
- PagesSection.cs
- UnsafeNativeMethods.cs
- Material.cs
- XdrBuilder.cs
- RoutedCommand.cs
- TypeConverter.cs
- ServiceBusyException.cs
- PolygonHotSpot.cs
- TreeWalker.cs
- Object.cs
- PageEventArgs.cs
- WebPartsPersonalization.cs
- TrackingServices.cs
- PersistenceProvider.cs
- Helper.cs
- Timer.cs