Code:
/ FXUpdate3074 / FXUpdate3074 / 1.1 / untmp / 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.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- Variable.cs
- ExceptionUtil.cs
- DefaultBindingPropertyAttribute.cs
- FrameworkContentElement.cs
- DispatcherSynchronizationContext.cs
- LoginView.cs
- _AutoWebProxyScriptWrapper.cs
- LongTypeConverter.cs
- FilterElement.cs
- KeyProperty.cs
- AppDomainUnloadedException.cs
- Constraint.cs
- IncrementalHitTester.cs
- DesignerWidgets.cs
- ViewManager.cs
- ClientRuntime.cs
- TypeDependencyAttribute.cs
- PolyLineSegmentFigureLogic.cs
- XmlSerializerSection.cs
- AttachInfo.cs
- StructuredType.cs
- ProbeDuplex11AsyncResult.cs
- VerificationException.cs
- documentsequencetextview.cs
- SHA512Managed.cs
- DataAccessException.cs
- PinnedBufferMemoryStream.cs
- RevocationPoint.cs
- FileUpload.cs
- ProcessDesigner.cs
- parserscommon.cs
- AVElementHelper.cs
- XmlWriter.cs
- XslCompiledTransform.cs
- ExceptionValidationRule.cs
- Brush.cs
- MetadataCache.cs
- HttpProfileBase.cs
- SelectionEditingBehavior.cs
- Models.cs
- ComplexPropertyEntry.cs
- RegexWorker.cs
- ReflectionPermission.cs
- ReverseInheritProperty.cs
- DefaultWorkflowLoaderService.cs
- DesignerPainter.cs
- _NestedSingleAsyncResult.cs
- TextTreeExtractElementUndoUnit.cs
- RegexMatchCollection.cs
- WindowHideOrCloseTracker.cs
- RequestSecurityToken.cs
- OleDbStruct.cs
- SignedPkcs7.cs
- PropertyEntry.cs
- BindingWorker.cs
- ListViewDeleteEventArgs.cs
- SimpleExpression.cs
- CqlGenerator.cs
- AdornerDecorator.cs
- WebPartMovingEventArgs.cs
- FileSystemEnumerable.cs
- HostedController.cs
- XamlGridLengthSerializer.cs
- SmtpSection.cs
- wgx_render.cs
- WindowsListViewGroupHelper.cs
- StorageMappingItemLoader.cs
- TextSearch.cs
- HttpConfigurationSystem.cs
- MenuItem.cs
- EntityReference.cs
- FontFamily.cs
- _ProxyChain.cs
- ParameterCollection.cs
- _StreamFramer.cs
- GraphicsContainer.cs
- DataSourceCacheDurationConverter.cs
- FileLevelControlBuilderAttribute.cs
- XmlHierarchicalDataSourceView.cs
- XmlSerializer.cs
- ControlParser.cs
- ZipQueryOperator.cs
- PageMediaType.cs
- BaseDataList.cs
- PageWrapper.cs
- TableLayoutPanelCellPosition.cs
- _DisconnectOverlappedAsyncResult.cs
- TemplateComponentConnector.cs
- SHA1Managed.cs
- ListItemParagraph.cs
- FontFamilyConverter.cs
- UnmanagedMarshal.cs
- GeometryConverter.cs
- SourceLocationProvider.cs
- StringUtil.cs
- ReliabilityContractAttribute.cs
- DataObjectPastingEventArgs.cs
- ParenthesizePropertyNameAttribute.cs
- GlyphRunDrawing.cs
- DataGridCellItemAutomationPeer.cs