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
- FixedDocumentSequencePaginator.cs
- BinaryFormatterSinks.cs
- SourceFileBuildProvider.cs
- SqlTriggerContext.cs
- OwnerDrawPropertyBag.cs
- ToolstripProfessionalRenderer.cs
- GPRECT.cs
- TextServicesCompartmentContext.cs
- InvalidCardException.cs
- RadioButton.cs
- EmissiveMaterial.cs
- PageFunction.cs
- DataControlFieldHeaderCell.cs
- GenericPrincipal.cs
- ProcessHostServerConfig.cs
- SettingsAttributes.cs
- MetadataUtil.cs
- PerformanceCounterPermissionAttribute.cs
- DataGridViewCellStyleConverter.cs
- _ProxyChain.cs
- StatusStrip.cs
- TypeInitializationException.cs
- SAPIEngineTypes.cs
- ShaderEffect.cs
- SemanticValue.cs
- CultureInfoConverter.cs
- _ConnectStream.cs
- ActiveXSite.cs
- SurrogateDataContract.cs
- JsonMessageEncoderFactory.cs
- WeakReferenceKey.cs
- NativeMethods.cs
- TargetConverter.cs
- DataSourceHelper.cs
- BitSet.cs
- BindingEntityInfo.cs
- LinearGradientBrush.cs
- IPAddressCollection.cs
- SQLMembershipProvider.cs
- SqlCacheDependency.cs
- BezierSegment.cs
- WebPartsPersonalization.cs
- ImmutableObjectAttribute.cs
- ObjectSpanRewriter.cs
- OracleNumber.cs
- ResourceExpressionBuilder.cs
- PersonalizationState.cs
- MSG.cs
- propertyentry.cs
- StrongNameMembershipCondition.cs
- FormatVersion.cs
- MsdtcWrapper.cs
- Variant.cs
- LocalizedNameDescriptionPair.cs
- ExpressionVisitorHelpers.cs
- HttpValueCollection.cs
- Content.cs
- SqlCommandSet.cs
- CatalogPart.cs
- ReadOnlyTernaryTree.cs
- XmlSchemaSequence.cs
- dbdatarecord.cs
- DataGridViewDataErrorEventArgs.cs
- ToolStripLocationCancelEventArgs.cs
- DefaultSection.cs
- XmlConvert.cs
- KoreanCalendar.cs
- CustomUserNameSecurityTokenAuthenticator.cs
- PropertyKey.cs
- XmlReader.cs
- LinqDataSourceContextData.cs
- Menu.cs
- XmlSerializationWriter.cs
- ActivationArguments.cs
- XsltConvert.cs
- DataGridItem.cs
- ByteKeyFrameCollection.cs
- DayRenderEvent.cs
- CodeDelegateCreateExpression.cs
- AsyncPostBackTrigger.cs
- TreeViewImageGenerator.cs
- PatternMatchRules.cs
- TagMapInfo.cs
- LocalizabilityAttribute.cs
- TemplateBindingExpression.cs
- NewItemsContextMenuStrip.cs
- PolyLineSegment.cs
- UnsafeNativeMethodsPenimc.cs
- SerializationInfoEnumerator.cs
- StructuredProperty.cs
- OleServicesContext.cs
- ImageField.cs
- login.cs
- EncryptedKeyHashIdentifierClause.cs
- KnownIds.cs
- SQLGuidStorage.cs
- ScriptModule.cs
- HandlerBase.cs
- TypeConverterHelper.cs
- XPathSingletonIterator.cs