Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / Orcas / SP / wpf / src / Base / System / Windows / AttachedPropertyBrowsableForTypeAttribute.cs / 1 / AttachedPropertyBrowsableForTypeAttribute.cs
namespace System.Windows
{
using System;
///
/// This class declares that an attached property is browsable only
/// for dependency objects that derive from the given type. If more
/// than one type is specified, the property is browsable if any type
/// matches (logical or). The type may also be an interface.
///
[AttributeUsage(AttributeTargets.Method, AllowMultiple = true)]
public sealed class AttachedPropertyBrowsableForTypeAttribute : AttachedPropertyBrowsableAttribute
{
//------------------------------------------------------
//
// Constructors
//
//-----------------------------------------------------
///
/// Creates a new AttachedPropertyBrowsableForTypeAttribute. Provide the type
/// you want the attached property to be browsable for. Multiple
/// attributes may be used to provide support for more than one
/// type.
///
public AttachedPropertyBrowsableForTypeAttribute(Type targetType)
{
if (targetType == null) throw new ArgumentNullException("targetType");
_targetType = targetType;
}
//-----------------------------------------------------
//
// Public Properties
//
//-----------------------------------------------------
///
/// Returns the type passed into the constructor.
///
public Type TargetType
{
get
{
return _targetType;
}
}
///
/// For AllowMultiple attributes, TypeId must be unique for
/// each unique instance. The default returns the type, which
/// is only correct for AllowMultiple == false.
///
public override object TypeId
{
get
{
return this;
}
}
//------------------------------------------------------
//
// Public Methods
//
//-----------------------------------------------------
///
/// Overrides Object.Equals to implement correct equality semantics for this
/// attribute.
///
public override bool Equals(object obj)
{
AttachedPropertyBrowsableForTypeAttribute other = obj as AttachedPropertyBrowsableForTypeAttribute;
if (other == null) return false;
return _targetType == other._targetType;
}
///
/// Overrides Object.GetHashCode to implement correct hashing semantics.
///
public override int GetHashCode()
{
return _targetType.GetHashCode();
}
//------------------------------------------------------
//
// Internal Methods
//
//------------------------------------------------------
///
/// Returns true if the dependency object passed to the method is a type,
/// subtype or implememts the interface of any of the the types contained
/// in this object.
///
internal override bool IsBrowsable(DependencyObject d, DependencyProperty dp)
{
if (d == null) throw new ArgumentNullException("d");
if (dp == null) throw new ArgumentNullException("dp");
// Get the dependency object type for our target type.
// We cannot assume the user didn't do something wrong and
// feed us a type that is not a dependency object, but that is
// rare enough that it is worth the try/catch here rather than
// a double IsAssignableFrom (one here, and one in DependencyObjectType).
// We still use a flag here rather than checking for a null
// _dTargetType so that a bad property that throws won't consistently
// slow the system down with ArgumentExceptions.
if (!_dTargetTypeChecked)
{
try
{
_dTargetType = DependencyObjectType.FromSystemType(_targetType);
}
catch(ArgumentException)
{
}
_dTargetTypeChecked = true;
}
if (_dTargetType != null && _dTargetType.IsInstanceOfType(d))
{
return true;
}
return false;
}
///
/// Returns true if a browsable match is true if any one of multiple
/// instances of the same type return true for IsBrowsable. We override
/// this to return true because any one of a successfull match for
/// IsBrowsable is accepted.
///
internal override bool UnionResults
{
get
{
return true;
}
}
//-----------------------------------------------------
//
// Private Fields
//
//------------------------------------------------------
private Type _targetType;
private DependencyObjectType _dTargetType;
private bool _dTargetTypeChecked;
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// Copyright (c) Microsoft Corporation. All rights reserved.
namespace System.Windows
{
using System;
///
/// This class declares that an attached property is browsable only
/// for dependency objects that derive from the given type. If more
/// than one type is specified, the property is browsable if any type
/// matches (logical or). The type may also be an interface.
///
[AttributeUsage(AttributeTargets.Method, AllowMultiple = true)]
public sealed class AttachedPropertyBrowsableForTypeAttribute : AttachedPropertyBrowsableAttribute
{
//------------------------------------------------------
//
// Constructors
//
//-----------------------------------------------------
///
/// Creates a new AttachedPropertyBrowsableForTypeAttribute. Provide the type
/// you want the attached property to be browsable for. Multiple
/// attributes may be used to provide support for more than one
/// type.
///
public AttachedPropertyBrowsableForTypeAttribute(Type targetType)
{
if (targetType == null) throw new ArgumentNullException("targetType");
_targetType = targetType;
}
//-----------------------------------------------------
//
// Public Properties
//
//-----------------------------------------------------
///
/// Returns the type passed into the constructor.
///
public Type TargetType
{
get
{
return _targetType;
}
}
///
/// For AllowMultiple attributes, TypeId must be unique for
/// each unique instance. The default returns the type, which
/// is only correct for AllowMultiple == false.
///
public override object TypeId
{
get
{
return this;
}
}
//------------------------------------------------------
//
// Public Methods
//
//-----------------------------------------------------
///
/// Overrides Object.Equals to implement correct equality semantics for this
/// attribute.
///
public override bool Equals(object obj)
{
AttachedPropertyBrowsableForTypeAttribute other = obj as AttachedPropertyBrowsableForTypeAttribute;
if (other == null) return false;
return _targetType == other._targetType;
}
///
/// Overrides Object.GetHashCode to implement correct hashing semantics.
///
public override int GetHashCode()
{
return _targetType.GetHashCode();
}
//------------------------------------------------------
//
// Internal Methods
//
//------------------------------------------------------
///
/// Returns true if the dependency object passed to the method is a type,
/// subtype or implememts the interface of any of the the types contained
/// in this object.
///
internal override bool IsBrowsable(DependencyObject d, DependencyProperty dp)
{
if (d == null) throw new ArgumentNullException("d");
if (dp == null) throw new ArgumentNullException("dp");
// Get the dependency object type for our target type.
// We cannot assume the user didn't do something wrong and
// feed us a type that is not a dependency object, but that is
// rare enough that it is worth the try/catch here rather than
// a double IsAssignableFrom (one here, and one in DependencyObjectType).
// We still use a flag here rather than checking for a null
// _dTargetType so that a bad property that throws won't consistently
// slow the system down with ArgumentExceptions.
if (!_dTargetTypeChecked)
{
try
{
_dTargetType = DependencyObjectType.FromSystemType(_targetType);
}
catch(ArgumentException)
{
}
_dTargetTypeChecked = true;
}
if (_dTargetType != null && _dTargetType.IsInstanceOfType(d))
{
return true;
}
return false;
}
///
/// Returns true if a browsable match is true if any one of multiple
/// instances of the same type return true for IsBrowsable. We override
/// this to return true because any one of a successfull match for
/// IsBrowsable is accepted.
///
internal override bool UnionResults
{
get
{
return true;
}
}
//-----------------------------------------------------
//
// Private Fields
//
//------------------------------------------------------
private Type _targetType;
private DependencyObjectType _dTargetType;
private bool _dTargetTypeChecked;
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- XPathChildIterator.cs
- RawTextInputReport.cs
- DesignerLoader.cs
- SpotLight.cs
- Trigger.cs
- PartialToken.cs
- ReferentialConstraint.cs
- DesignDataSource.cs
- MSG.cs
- unsafeIndexingFilterStream.cs
- MediaElementAutomationPeer.cs
- XmlReflectionMember.cs
- Calendar.cs
- PointAnimationUsingKeyFrames.cs
- XmlDataSourceNodeDescriptor.cs
- RowUpdatedEventArgs.cs
- Transform.cs
- DecoderFallback.cs
- TabControlEvent.cs
- DEREncoding.cs
- PointCollection.cs
- PackageRelationshipSelector.cs
- BooleanConverter.cs
- FeatureAttribute.cs
- ExternalFile.cs
- WebBrowserHelper.cs
- DocumentPage.cs
- TableAutomationPeer.cs
- MultiSelectRootGridEntry.cs
- WorkflowItemsPresenter.cs
- SymbolType.cs
- InvalidFilterCriteriaException.cs
- CrossContextChannel.cs
- PanelStyle.cs
- AppearanceEditorPart.cs
- SwitchLevelAttribute.cs
- DeclaredTypeElementCollection.cs
- WebSysDescriptionAttribute.cs
- RequestCachePolicy.cs
- InstalledVoice.cs
- PerformanceCounter.cs
- GeometryCollection.cs
- FigureParaClient.cs
- ToolZone.cs
- SchemaNotation.cs
- VerifyHashRequest.cs
- AdornerHitTestResult.cs
- BitmapInitialize.cs
- DataObjectPastingEventArgs.cs
- TriggerCollection.cs
- CommandEventArgs.cs
- DocumentPageTextView.cs
- ToolboxDataAttribute.cs
- WebPartEditVerb.cs
- DesignerActionService.cs
- DataRecord.cs
- DateTimeOffsetConverter.cs
- TextEndOfSegment.cs
- Verify.cs
- StagingAreaInputItem.cs
- DurationConverter.cs
- MsmqIntegrationBindingElement.cs
- IndependentlyAnimatedPropertyMetadata.cs
- RegionData.cs
- glyphs.cs
- Type.cs
- EmptyEnumerator.cs
- InfocardClientCredentials.cs
- WindowsRebar.cs
- SaveWorkflowCommand.cs
- TemplatedAdorner.cs
- PageContentCollection.cs
- ToolStripDropDownClosingEventArgs.cs
- KeyNotFoundException.cs
- CredentialManagerDialog.cs
- ApplicationProxyInternal.cs
- XmlSchemaSimpleContent.cs
- MemoryPressure.cs
- MethodBuilder.cs
- XmlSchemaAny.cs
- DiffuseMaterial.cs
- ParamArrayAttribute.cs
- XsltQilFactory.cs
- FrugalMap.cs
- CountdownEvent.cs
- DataSysAttribute.cs
- RichTextBoxContextMenu.cs
- ToolStripLocationCancelEventArgs.cs
- storepermissionattribute.cs
- ColumnPropertiesGroup.cs
- ClaimSet.cs
- AuthStoreRoleProvider.cs
- DecimalKeyFrameCollection.cs
- ConfigurationValidatorAttribute.cs
- PageTheme.cs
- CodeRemoveEventStatement.cs
- DesignerSerializerAttribute.cs
- Matrix3D.cs
- ListenerElementsCollection.cs
- XmlSchemaSimpleTypeRestriction.cs