Code:
/ DotNET / DotNET / 8.0 / untmp / whidbey / REDBITS / 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); } } }
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- BuildProviderAppliesToAttribute.cs
- TextSegment.cs
- ModelItemCollection.cs
- LoadWorkflowAsyncResult.cs
- PointValueSerializer.cs
- HtmlGenericControl.cs
- NestedContainer.cs
- SwitchLevelAttribute.cs
- MobileTemplatedControlDesigner.cs
- Quad.cs
- RenderContext.cs
- DataSpaceManager.cs
- TextControl.cs
- Screen.cs
- EntityViewGenerationConstants.cs
- KeyValuePairs.cs
- GridViewUpdatedEventArgs.cs
- GroupBox.cs
- ConfigurationSection.cs
- HttpAsyncResult.cs
- Utils.cs
- TableHeaderCell.cs
- CompositeActivityValidator.cs
- FamilyTypefaceCollection.cs
- Crypto.cs
- HtmlCommandAdapter.cs
- FacetChecker.cs
- CodeAttributeArgumentCollection.cs
- OdbcConnection.cs
- ResourceReader.cs
- DataSourceHelper.cs
- BoolLiteral.cs
- _ServiceNameStore.cs
- HeaderedItemsControl.cs
- ObjRef.cs
- BinaryUtilClasses.cs
- SHA1.cs
- DeviceSpecificChoice.cs
- AsymmetricSignatureDeformatter.cs
- PropertyDescriptorComparer.cs
- SqlErrorCollection.cs
- TextContainerHelper.cs
- HttpPostedFileBase.cs
- GeneralTransform3DGroup.cs
- MetadataItemEmitter.cs
- DataPagerFieldCommandEventArgs.cs
- System.Data_BID.cs
- Logging.cs
- PathFigureCollection.cs
- DataBinding.cs
- TableLayoutRowStyleCollection.cs
- DesigntimeLicenseContext.cs
- ServicePoint.cs
- CompensatableSequenceActivity.cs
- HtmlToClrEventProxy.cs
- Exception.cs
- DbProviderServices.cs
- KeyedCollection.cs
- HttpValueCollection.cs
- LoginDesignerUtil.cs
- QilTargetType.cs
- UnknownBitmapEncoder.cs
- GridViewPageEventArgs.cs
- OperatingSystemVersionCheck.cs
- ControlLocalizer.cs
- ObjectDataSourceSelectingEventArgs.cs
- CompensateDesigner.cs
- SelectedCellsCollection.cs
- LogEntryHeaderv1Deserializer.cs
- RadioButtonStandardAdapter.cs
- _HeaderInfo.cs
- ExeConfigurationFileMap.cs
- XmlIncludeAttribute.cs
- XsdBuildProvider.cs
- figurelength.cs
- DataRowExtensions.cs
- ProcessStartInfo.cs
- MailDefinition.cs
- WebHeaderCollection.cs
- EditBehavior.cs
- WeakReference.cs
- TimersDescriptionAttribute.cs
- PageContentCollection.cs
- UndirectedGraph.cs
- WriteableOnDemandPackagePart.cs
- MenuStrip.cs
- WindowsPen.cs
- ContractListAdapter.cs
- WpfMemberInvoker.cs
- DefaultHttpHandler.cs
- EntityDataSourceWrapperCollection.cs
- PackagingUtilities.cs
- SimpleTypeResolver.cs
- StateWorkerRequest.cs
- EdmEntityTypeAttribute.cs
- ToolStripItemRenderEventArgs.cs
- DataGridTemplateColumn.cs
- CreateUserWizardStep.cs
- ExecutionContext.cs
- ToolStripSplitStackLayout.cs