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
- TableLayoutPanelResizeGlyph.cs
- SystemFonts.cs
- WindowsNonControl.cs
- Predicate.cs
- CacheHelper.cs
- DbConnectionPoolIdentity.cs
- TableLayoutStyle.cs
- XmlSerializationWriter.cs
- SafeProcessHandle.cs
- SiteOfOriginContainer.cs
- XslVisitor.cs
- StringFormat.cs
- PersonalizationStateInfoCollection.cs
- SqlConnectionFactory.cs
- PathSegment.cs
- ConfigurationPermission.cs
- CutCopyPasteHelper.cs
- ExclusiveTcpListener.cs
- DBCSCodePageEncoding.cs
- LayoutEvent.cs
- SemanticBasicElement.cs
- SafeHGlobalHandleCritical.cs
- Type.cs
- Normalization.cs
- ParseHttpDate.cs
- AttributeConverter.cs
- StateManagedCollection.cs
- DataGridViewRowsRemovedEventArgs.cs
- HttpModuleAction.cs
- Int32Rect.cs
- OrderedDictionary.cs
- DynamicPropertyHolder.cs
- DesignerVerb.cs
- DBNull.cs
- ConfigurationElement.cs
- Model3DGroup.cs
- SqlUtil.cs
- MethodAccessException.cs
- DataSourceControlBuilder.cs
- AttributeUsageAttribute.cs
- CapabilitiesAssignment.cs
- AvTraceFormat.cs
- BuildProvidersCompiler.cs
- DataGridViewAutoSizeModeEventArgs.cs
- CodeMemberField.cs
- RegexStringValidatorAttribute.cs
- WindowsFormsHost.cs
- ActivityStateRecord.cs
- Argument.cs
- Transform.cs
- HexParser.cs
- XmlArrayItemAttributes.cs
- ToolboxItemImageConverter.cs
- PropertyPathConverter.cs
- ActionMismatchAddressingException.cs
- FixedTextView.cs
- ZipIOExtraFieldPaddingElement.cs
- XmlQualifiedNameTest.cs
- ByteStorage.cs
- Style.cs
- HtmlEmptyTagControlBuilder.cs
- XmlDataDocument.cs
- WebContext.cs
- mediaeventshelper.cs
- SymmetricKeyWrap.cs
- GridViewAutomationPeer.cs
- Model3DCollection.cs
- AssemblyEvidenceFactory.cs
- objectquery_tresulttype.cs
- DynamicILGenerator.cs
- DataGridPageChangedEventArgs.cs
- ExpressionBuilderContext.cs
- HtmlControlDesigner.cs
- FormViewPageEventArgs.cs
- XmlSchemaDatatype.cs
- BitStack.cs
- NotifyIcon.cs
- ProxyHelper.cs
- LineGeometry.cs
- BindingMAnagerBase.cs
- ShaderEffect.cs
- DynamicPropertyHolder.cs
- ExternalFile.cs
- CollectionViewProxy.cs
- RowType.cs
- DataReaderContainer.cs
- BitmapEffectOutputConnector.cs
- EditingScopeUndoUnit.cs
- SpellerHighlightLayer.cs
- CollectionConverter.cs
- PersonalizationProvider.cs
- MenuEventArgs.cs
- CacheMemory.cs
- MessageBox.cs
- RoleManagerModule.cs
- XmlBinaryWriterSession.cs
- KeyTimeConverter.cs
- TraceSource.cs
- VisualTarget.cs
- StrongNameMembershipCondition.cs