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;
}
}
///
/// Indicates the allowed child control type.
/// This property is read-only.
///
public Type ChildControlType {
get {
if (_childControlType == null) {
return typeof(System.Web.UI.Control);
}
return _childControlType;
}
}
///
///
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
- BinHexEncoder.cs
- SizeFConverter.cs
- SEHException.cs
- ConcatQueryOperator.cs
- DependencyObjectType.cs
- SmiContextFactory.cs
- Compensation.cs
- CursorInteropHelper.cs
- KeyGesture.cs
- ConfigurationValidatorAttribute.cs
- ListChangedEventArgs.cs
- RowCache.cs
- BinaryObjectWriter.cs
- Win32.cs
- DoubleCollection.cs
- NonClientArea.cs
- InstanceDataCollection.cs
- ContentControl.cs
- PagedDataSource.cs
- ToolStripItemEventArgs.cs
- MetadataFile.cs
- HuffModule.cs
- VBCodeProvider.cs
- QueryInterceptorAttribute.cs
- TabControlEvent.cs
- ArgumentsParser.cs
- PerformanceCounterPermissionEntry.cs
- PointAnimationClockResource.cs
- AddInAdapter.cs
- DnsPermission.cs
- PackageRelationshipCollection.cs
- MessagingActivityHelper.cs
- RotateTransform.cs
- Single.cs
- XmlArrayAttribute.cs
- FileChangesMonitor.cs
- StateMachineHelpers.cs
- FlowDocumentPageViewerAutomationPeer.cs
- PageAdapter.cs
- StyleCollectionEditor.cs
- ProviderSettingsCollection.cs
- RubberbandSelector.cs
- WindowsPrincipal.cs
- ReferentialConstraint.cs
- XmlSchemaComplexContentExtension.cs
- DispatcherProcessingDisabled.cs
- JsonUriDataContract.cs
- ProcessThreadCollection.cs
- DataControlFieldHeaderCell.cs
- SoapHttpTransportImporter.cs
- BaseComponentEditor.cs
- SponsorHelper.cs
- ApplicationCommands.cs
- HyperLinkColumn.cs
- ObjectSecurity.cs
- ModelUIElement3D.cs
- SystemWebSectionGroup.cs
- CompositionTarget.cs
- SectionUpdates.cs
- DynamicVirtualDiscoSearcher.cs
- SqlDataSourceParameterParser.cs
- TextReader.cs
- AuthenticationModuleElementCollection.cs
- RemotingException.cs
- XsltConvert.cs
- FixedPage.cs
- SiteMapPath.cs
- StreamHelper.cs
- AccessDataSource.cs
- MessageSecurityException.cs
- ValidationPropertyAttribute.cs
- SemanticTag.cs
- RequestNavigateEventArgs.cs
- SQLChars.cs
- Int32Collection.cs
- ImageCodecInfo.cs
- DataColumnCollection.cs
- RangeContentEnumerator.cs
- GradientStop.cs
- XmlSchemaExternal.cs
- ServiceRoute.cs
- WebSysDefaultValueAttribute.cs
- PropertyManager.cs
- CodeMemberProperty.cs
- MenuItemAutomationPeer.cs
- FormViewUpdateEventArgs.cs
- RuntimeConfigLKG.cs
- FacetEnabledSchemaElement.cs
- UniformGrid.cs
- HttpSocketManager.cs
- AutoGeneratedField.cs
- DbDeleteCommandTree.cs
- _LoggingObject.cs
- WebSysDefaultValueAttribute.cs
- SecurityTokenException.cs
- WpfKnownTypeInvoker.cs
- DoubleIndependentAnimationStorage.cs
- RoutedEventArgs.cs
- ScriptControlDescriptor.cs
- WebPartZoneAutoFormat.cs