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
- BatchServiceHost.cs
- SoapFormatter.cs
- DefaultHttpHandler.cs
- EnterpriseServicesHelper.cs
- ComponentResourceKeyConverter.cs
- IpcClientManager.cs
- MessagePropertyFilter.cs
- ITextView.cs
- ApplicationServicesHostFactory.cs
- CodeCompiler.cs
- FontStyles.cs
- StrokeIntersection.cs
- GridViewEditEventArgs.cs
- RegisteredExpandoAttribute.cs
- HttpEncoderUtility.cs
- AuthorizationRuleCollection.cs
- CleanUpVirtualizedItemEventArgs.cs
- WebAdminConfigurationHelper.cs
- Effect.cs
- ObjectComplexPropertyMapping.cs
- QueryUtil.cs
- SchemaImporterExtension.cs
- RayMeshGeometry3DHitTestResult.cs
- entitydatasourceentitysetnameconverter.cs
- FixedSchema.cs
- ServiceNameElement.cs
- TypeElement.cs
- TextSelectionHighlightLayer.cs
- HostedBindingBehavior.cs
- SessionStateSection.cs
- BitmapEffectInputConnector.cs
- SystemIcmpV6Statistics.cs
- ReadOnlyActivityGlyph.cs
- ObjectDataSourceFilteringEventArgs.cs
- AnchoredBlock.cs
- BrowserDefinitionCollection.cs
- TdsParserStateObject.cs
- AsymmetricAlgorithm.cs
- FollowerQueueCreator.cs
- CompilerInfo.cs
- BevelBitmapEffect.cs
- FlowLayoutPanel.cs
- TemplateColumn.cs
- Int16.cs
- XamlSerializerUtil.cs
- MaskedTextProvider.cs
- WebPartConnectionsConnectVerb.cs
- SqlClientWrapperSmiStream.cs
- PriorityChain.cs
- CallbackCorrelationInitializer.cs
- EntryIndex.cs
- VirtualPath.cs
- DateTimeConverter.cs
- GeometryHitTestParameters.cs
- DataGridHeadersVisibilityToVisibilityConverter.cs
- FrugalMap.cs
- Rect.cs
- Interlocked.cs
- PLINQETWProvider.cs
- DataGridViewRowPostPaintEventArgs.cs
- ListControl.cs
- Serializer.cs
- TypeUsageBuilder.cs
- ProfileBuildProvider.cs
- HelpEvent.cs
- XmlSiteMapProvider.cs
- TreeNodeConverter.cs
- ArglessEventHandlerProxy.cs
- DateTimePicker.cs
- HtmlInputControl.cs
- TakeOrSkipQueryOperator.cs
- _UncName.cs
- DataMisalignedException.cs
- QilDataSource.cs
- TableLayout.cs
- CollectionDataContract.cs
- NavigationPropertyEmitter.cs
- ping.cs
- EdmEntityTypeAttribute.cs
- QueryCacheManager.cs
- PerformanceCounterManager.cs
- messageonlyhwndwrapper.cs
- IgnoreSectionHandler.cs
- ObjectTag.cs
- StaticResourceExtension.cs
- BitmapEffectDrawing.cs
- DataPagerFieldItem.cs
- Directory.cs
- XmlSchemaInfo.cs
- DataGridViewColumn.cs
- WebConfigurationHostFileChange.cs
- ButtonFieldBase.cs
- COM2PropertyDescriptor.cs
- CheckableControlBaseAdapter.cs
- SqlConnectionHelper.cs
- TabPanel.cs
- _ConnectionGroup.cs
- LocalizationParserHooks.cs
- ConversionContext.cs
- DbProviderServices.cs