Code:
/ FX-1434 / FX-1434 / 1.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
- DWriteFactory.cs
- ReliabilityContractAttribute.cs
- ObjectManager.cs
- COM2IPerPropertyBrowsingHandler.cs
- SqlClientWrapperSmiStreamChars.cs
- WebPartCatalogCloseVerb.cs
- OdbcConnectionStringbuilder.cs
- TableLayoutRowStyleCollection.cs
- printdlgexmarshaler.cs
- SerializerWriterEventHandlers.cs
- TimeSpanSecondsOrInfiniteConverter.cs
- UpnEndpointIdentityExtension.cs
- BreakRecordTable.cs
- VerticalAlignConverter.cs
- Token.cs
- StreamInfo.cs
- ConsumerConnectionPointCollection.cs
- ThreadExceptionDialog.cs
- GuidelineSet.cs
- ActiveXContainer.cs
- SqlConnectionManager.cs
- DataGridViewCellStyleChangedEventArgs.cs
- CellPartitioner.cs
- EntityDataSourceViewSchema.cs
- SamlAudienceRestrictionCondition.cs
- XmlSiteMapProvider.cs
- BrowserCapabilitiesCodeGenerator.cs
- ListViewUpdatedEventArgs.cs
- FormClosedEvent.cs
- DocumentXPathNavigator.cs
- XmlArrayItemAttribute.cs
- NativeCompoundFileAPIs.cs
- DataSourceSelectArguments.cs
- Component.cs
- TextModifierScope.cs
- WebPartMenuStyle.cs
- StrongNameMembershipCondition.cs
- HScrollBar.cs
- ResourceManager.cs
- XmlSchemaAnnotated.cs
- FileDialog.cs
- XmlArrayItemAttributes.cs
- DataGridTable.cs
- XhtmlBasicImageAdapter.cs
- GenericWebPart.cs
- HwndHostAutomationPeer.cs
- TemplateInstanceAttribute.cs
- MasterPageCodeDomTreeGenerator.cs
- GlobalItem.cs
- RadioButtonRenderer.cs
- SSmlParser.cs
- TextEndOfSegment.cs
- WebPartHelpVerb.cs
- DrawingImage.cs
- CompilerParameters.cs
- BamlLocalizer.cs
- InputBuffer.cs
- Base64Decoder.cs
- CompiledRegexRunner.cs
- SqlConnectionFactory.cs
- DataServiceQuery.cs
- RemoteWebConfigurationHostStream.cs
- XmlnsCache.cs
- HTTPRemotingHandler.cs
- TripleDESCryptoServiceProvider.cs
- LineVisual.cs
- SerializationInfo.cs
- StatementContext.cs
- HashLookup.cs
- FileLoadException.cs
- LightweightCodeGenerator.cs
- GridSplitterAutomationPeer.cs
- SqlDataSourceStatusEventArgs.cs
- ProcessThreadCollection.cs
- TextLineBreak.cs
- WasEndpointConfigContainer.cs
- Viewport3DVisual.cs
- CheckPair.cs
- ScriptMethodAttribute.cs
- DataSourceSelectArguments.cs
- FixedHyperLink.cs
- JsonMessageEncoderFactory.cs
- EntityObject.cs
- DockPattern.cs
- Privilege.cs
- path.cs
- PageCache.cs
- IxmlLineInfo.cs
- ListBoxItemWrapperAutomationPeer.cs
- XmlIlGenerator.cs
- Tool.cs
- SettingsPropertyCollection.cs
- LedgerEntryCollection.cs
- TiffBitmapEncoder.cs
- LinkUtilities.cs
- ChangeBlockUndoRecord.cs
- TextPattern.cs
- Lazy.cs
- DesignUtil.cs
- ListSourceHelper.cs