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
- FacetValues.cs
- AttachmentCollection.cs
- Mouse.cs
- BindingList.cs
- DesignerAdapterUtil.cs
- LowerCaseStringConverter.cs
- Contracts.cs
- HttpStaticObjectsCollectionBase.cs
- cookie.cs
- DateTime.cs
- SchemaMapping.cs
- Queue.cs
- Point3D.cs
- IIS7WorkerRequest.cs
- ConfigurationManager.cs
- FontResourceCache.cs
- UnescapedXmlDiagnosticData.cs
- WebHostedComPlusServiceHost.cs
- HttpCachePolicyElement.cs
- KnownIds.cs
- CompModSwitches.cs
- DataGridViewLayoutData.cs
- ServiceInfoCollection.cs
- DataTableTypeConverter.cs
- WebPartDisplayMode.cs
- SerialPinChanges.cs
- FactoryRecord.cs
- EntityDataSourceChangedEventArgs.cs
- CommandSet.cs
- Substitution.cs
- EncryptRequest.cs
- Viewport3DAutomationPeer.cs
- TypeLoadException.cs
- PropertyGroupDescription.cs
- ContainerTracking.cs
- EntityStoreSchemaGenerator.cs
- SelectedGridItemChangedEvent.cs
- ChannelListenerBase.cs
- HtmlObjectListAdapter.cs
- Storyboard.cs
- FunctionCommandText.cs
- FreezableDefaultValueFactory.cs
- DelegatedStream.cs
- InputLangChangeEvent.cs
- PauseStoryboard.cs
- LongValidatorAttribute.cs
- ListViewContainer.cs
- HttpWebRequest.cs
- SoapCodeExporter.cs
- ChannelManagerHelpers.cs
- SplitterEvent.cs
- Point3DCollectionConverter.cs
- DbFunctionCommandTree.cs
- EntityDesignPluralizationHandler.cs
- FixUpCollection.cs
- EmissiveMaterial.cs
- AtomEntry.cs
- DecoderReplacementFallback.cs
- CompositeFontParser.cs
- KeyBinding.cs
- SqlDataSourceCommandEventArgs.cs
- DataGridCaption.cs
- Int32CollectionConverter.cs
- ListViewTableCell.cs
- Native.cs
- ASCIIEncoding.cs
- TextParagraph.cs
- WebBrowserHelper.cs
- RegisteredArrayDeclaration.cs
- WebReferenceOptions.cs
- Scene3D.cs
- BitmapData.cs
- XmlProcessingInstruction.cs
- BamlResourceDeserializer.cs
- Sentence.cs
- SqlDataReaderSmi.cs
- WpfPayload.cs
- Psha1DerivedKeyGenerator.cs
- ServicePoint.cs
- TextStore.cs
- ToolStripDropDown.cs
- DataSourceCache.cs
- QuadraticBezierSegment.cs
- RowUpdatedEventArgs.cs
- ReflectionUtil.cs
- FontClient.cs
- WindowsStatic.cs
- MobileListItemCollection.cs
- PackageProperties.cs
- TaskFileService.cs
- WebPartMovingEventArgs.cs
- AttributeCollection.cs
- RegexMatch.cs
- UnsafeNativeMethods.cs
- DataGridTextBoxColumn.cs
- UnitControl.cs
- Freezable.cs
- CodeObject.cs
- JsonWriterDelegator.cs
- EditingMode.cs