Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / xsp / System / Web / UI / ParseChildrenAsPropertiesAttribute.cs / 1305376 / 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)]
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);
}
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
//------------------------------------------------------------------------------
//
// 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)]
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);
}
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- WebDisplayNameAttribute.cs
- Action.cs
- ProvideValueServiceProvider.cs
- TagNameToTypeMapper.cs
- CompositeKey.cs
- ThreadPoolTaskScheduler.cs
- AttachedPropertyBrowsableForTypeAttribute.cs
- StructuredProperty.cs
- Int32CAMarshaler.cs
- CompensateDesigner.cs
- Stackframe.cs
- SharedHttpsTransportManager.cs
- TraceUtility.cs
- XslAst.cs
- ImageConverter.cs
- WebPartConnectionsDisconnectVerb.cs
- ParsedAttributeCollection.cs
- HexParser.cs
- UnsafeNativeMethods.cs
- TempFiles.cs
- WebConfigurationManager.cs
- DataGridViewDataErrorEventArgs.cs
- DataGridViewCell.cs
- ControlHelper.cs
- MenuItemStyleCollection.cs
- VolatileEnlistmentState.cs
- DataGridViewSortCompareEventArgs.cs
- DocumentStatusResources.cs
- NativeCompoundFileAPIs.cs
- ScrollBarRenderer.cs
- Border.cs
- ApplyTemplatesAction.cs
- BaseValidator.cs
- RawStylusInputCustomData.cs
- MaskedTextBoxDesigner.cs
- SaveCardRequest.cs
- CompatibleComparer.cs
- ListenerConnectionDemuxer.cs
- GestureRecognitionResult.cs
- ProfilePropertySettings.cs
- DesignerTransaction.cs
- TypeSystem.cs
- _CookieModule.cs
- FontNameConverter.cs
- WebPartMinimizeVerb.cs
- AccessDataSource.cs
- WmfPlaceableFileHeader.cs
- InkPresenterAutomationPeer.cs
- Point4D.cs
- SecurityHeaderLayout.cs
- LogLogRecord.cs
- MachineKey.cs
- MachineKeyConverter.cs
- DataGridViewButtonCell.cs
- SessionEndingEventArgs.cs
- BindableAttribute.cs
- ChangeDirector.cs
- AutomationPropertyInfo.cs
- unitconverter.cs
- CodeTypeReference.cs
- CompilerGlobalScopeAttribute.cs
- Geometry.cs
- bindurihelper.cs
- AnnotationResource.cs
- MultiTrigger.cs
- HyperlinkAutomationPeer.cs
- Visual3D.cs
- QilStrConcatenator.cs
- BooleanAnimationBase.cs
- ContextProperty.cs
- CryptoKeySecurity.cs
- _RequestCacheProtocol.cs
- ToolStripSplitStackLayout.cs
- Section.cs
- FileChangeNotifier.cs
- DateTimeFormat.cs
- AnimationTimeline.cs
- ListViewItemSelectionChangedEvent.cs
- BaseTemplateCodeDomTreeGenerator.cs
- ToolboxItem.cs
- SchemaNotation.cs
- TargetPerspective.cs
- MenuItemBindingCollection.cs
- RelationshipConstraintValidator.cs
- HandoffBehavior.cs
- ErrorTolerantObjectWriter.cs
- Accessible.cs
- HtmlButton.cs
- BackStopAuthenticationModule.cs
- SafeFileHandle.cs
- Barrier.cs
- NamespaceDisplay.xaml.cs
- EmptyCollection.cs
- DictionarySectionHandler.cs
- EpmTargetTree.cs
- ReadOnlyNameValueCollection.cs
- WindowsTreeView.cs
- Win32SafeHandles.cs
- ApplyImportsAction.cs
- BasicCommandTreeVisitor.cs