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
- RequestNavigateEventArgs.cs
- WpfWebRequestHelper.cs
- DataGridColumnCollectionEditor.cs
- Win32.cs
- DomNameTable.cs
- ViewBase.cs
- ThreadSafeList.cs
- IsolatedStoragePermission.cs
- EntityParameter.cs
- FileUtil.cs
- OrderByBuilder.cs
- VersionValidator.cs
- HttpPostedFile.cs
- SqlRewriteScalarSubqueries.cs
- _AutoWebProxyScriptEngine.cs
- TypedElement.cs
- sitestring.cs
- ProcessHostFactoryHelper.cs
- KeyedPriorityQueue.cs
- ExpressionNormalizer.cs
- ExpressionBindingCollection.cs
- Point.cs
- DbConnectionFactory.cs
- CalendarDesigner.cs
- shaperfactory.cs
- IndentedWriter.cs
- XmlSchemaChoice.cs
- ChameleonKey.cs
- ProtocolsSection.cs
- ExtenderProvidedPropertyAttribute.cs
- DayRenderEvent.cs
- MatrixStack.cs
- LoadWorkflowAsyncResult.cs
- MasterPageCodeDomTreeGenerator.cs
- MatrixTransform.cs
- VisualStyleInformation.cs
- HtmlInputCheckBox.cs
- CodeArgumentReferenceExpression.cs
- SqlNodeAnnotation.cs
- SqlFacetAttribute.cs
- CodeNamespace.cs
- FileSystemEventArgs.cs
- rsa.cs
- SqlUserDefinedAggregateAttribute.cs
- X509RawDataKeyIdentifierClause.cs
- ScriptingScriptResourceHandlerSection.cs
- EdmRelationshipNavigationPropertyAttribute.cs
- hebrewshape.cs
- InheritanceService.cs
- CodeSnippetTypeMember.cs
- Condition.cs
- WorkingDirectoryEditor.cs
- GetPageNumberCompletedEventArgs.cs
- SafeBitVector32.cs
- StringSource.cs
- SplitterEvent.cs
- COM2PictureConverter.cs
- JournalEntry.cs
- _SslSessionsCache.cs
- DataFormats.cs
- EUCJPEncoding.cs
- SqlUdtInfo.cs
- TextRange.cs
- DetailsViewPagerRow.cs
- ColorDialog.cs
- XmlObjectSerializerWriteContextComplexJson.cs
- SoapFaultCodes.cs
- UserControl.cs
- PageCodeDomTreeGenerator.cs
- PrefixQName.cs
- Wildcard.cs
- CharacterMetricsDictionary.cs
- IntSecurity.cs
- SafeBitVector32.cs
- DetailsViewUpdateEventArgs.cs
- TextRangeAdaptor.cs
- ToolStripPanelRow.cs
- StoryFragments.cs
- Error.cs
- WindowVisualStateTracker.cs
- HostSecurityManager.cs
- WsdlBuildProvider.cs
- StylusPointProperties.cs
- ConnectionManagementSection.cs
- HttpCachePolicyBase.cs
- RegistrationContext.cs
- SerializationSectionGroup.cs
- EntityParameter.cs
- LingerOption.cs
- Int32CollectionConverter.cs
- RpcResponse.cs
- NativeCppClassAttribute.cs
- KnownBoxes.cs
- PackageDigitalSignatureManager.cs
- SafeEventHandle.cs
- Variable.cs
- XmlUTF8TextReader.cs
- Error.cs
- ProfileInfo.cs
- ConsumerConnectionPointCollection.cs