Code:
/ FXUpdate3074 / FXUpdate3074 / 1.1 / DEVDIV / depot / DevDiv / releases / whidbey / QFE / 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. //------------------------------------------------------------------------------ //// 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.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- DataGridViewRowErrorTextNeededEventArgs.cs
- ProgressBarRenderer.cs
- SettingsProviderCollection.cs
- EntityDataSourceSelectingEventArgs.cs
- DbMetaDataCollectionNames.cs
- Int32RectValueSerializer.cs
- DataObjectSettingDataEventArgs.cs
- KeyNameIdentifierClause.cs
- LockCookie.cs
- DrawingAttributes.cs
- DrawingContext.cs
- BindingFormattingDialog.cs
- UIPropertyMetadata.cs
- CSharpCodeProvider.cs
- StackSpiller.Temps.cs
- Quaternion.cs
- SortableBindingList.cs
- Animatable.cs
- ConsoleTraceListener.cs
- HttpCookiesSection.cs
- MonthCalendar.cs
- PerformanceCounterPermissionEntryCollection.cs
- PlaceHolder.cs
- UnicodeEncoding.cs
- RuntimeWrappedException.cs
- XmlWellformedWriter.cs
- CodeSubDirectoriesCollection.cs
- ScrollChangedEventArgs.cs
- ListViewPagedDataSource.cs
- ColorAnimationUsingKeyFrames.cs
- _SslStream.cs
- WeakReferenceEnumerator.cs
- UserControl.cs
- OutputCacheSection.cs
- ServicesUtilities.cs
- _NestedSingleAsyncResult.cs
- Row.cs
- externdll.cs
- ClientData.cs
- XmlnsCache.cs
- UIAgentMonitorHandle.cs
- WorkflowDesignerColors.cs
- DoubleKeyFrameCollection.cs
- hwndwrapper.cs
- ButtonChrome.cs
- UnmanagedMarshal.cs
- versioninfo.cs
- StylusDevice.cs
- PropertyTabAttribute.cs
- ListParaClient.cs
- Hex.cs
- UnconditionalPolicy.cs
- DataBoundControlDesigner.cs
- Triplet.cs
- KnownTypeAttribute.cs
- UIAgentAsyncEndRequest.cs
- ScrollBar.cs
- RawMouseInputReport.cs
- Point4D.cs
- NativeCompoundFileAPIs.cs
- UnmanagedBitmapWrapper.cs
- DesignerActionPanel.cs
- DataSetUtil.cs
- PropertyCollection.cs
- Italic.cs
- XmlHierarchicalEnumerable.cs
- RepeatInfo.cs
- Content.cs
- QilCloneVisitor.cs
- _UriTypeConverter.cs
- TableItemStyle.cs
- DataTableCollection.cs
- MsmqChannelListenerBase.cs
- XamlWrappingReader.cs
- TemplateBaseAction.cs
- DataRecordInfo.cs
- IsolationInterop.cs
- FontCacheLogic.cs
- InProcStateClientManager.cs
- X509ChainElement.cs
- TypeUsageBuilder.cs
- TargetPerspective.cs
- _Semaphore.cs
- SqlBuffer.cs
- PatternMatcher.cs
- GenericUriParser.cs
- DataTableMappingCollection.cs
- SelectedGridItemChangedEvent.cs
- DecoderReplacementFallback.cs
- Nodes.cs
- FtpCachePolicyElement.cs
- BCLDebug.cs
- CommonObjectSecurity.cs
- Rijndael.cs
- LinqDataSourceSelectEventArgs.cs
- DataGridViewTextBoxColumn.cs
- AccessDataSource.cs
- AssemblyEvidenceFactory.cs
- ListDictionary.cs
- WebScriptClientGenerator.cs