Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / wpf / src / Base / System / ComponentModel / PropertyFilterAttribute.cs / 1305600 / PropertyFilterAttribute.cs
namespace System.ComponentModel
{
using System;
using System.Diagnostics.CodeAnalysis;
///
/// This attribute is a "query" attribute. It is
/// an attribute that causes the type description provider
/// to narrow the scope of returned properties. It differs
/// from normal attributes in that it cannot actually be
/// placed on a class as metadata and that the filter mechanism
/// is code rather than static metadata.
///
[AttributeUsage(AttributeTargets.Property | AttributeTargets.Method)]
public sealed class PropertyFilterAttribute : Attribute
{
//------------------------------------------------------
//
// Constructors
//
//-----------------------------------------------------
#region Constructors
///
/// Creates a new attribute.
///
public PropertyFilterAttribute(PropertyFilterOptions filter)
{
_filter = filter;
}
#endregion Constructors
//-----------------------------------------------------
//
// Public Methods
//
//-----------------------------------------------------
#region Public Methods
///
/// Override of Object.Equals that returns true if the filters
/// contained in both attributes match.
///
public override bool Equals(object value)
{
PropertyFilterAttribute a = value as PropertyFilterAttribute;
if (a != null && a._filter.Equals(_filter))
{
return true;
}
return false;
}
///
/// Override of Object.GetHashCode.
///
public override int GetHashCode()
{
return _filter.GetHashCode();
}
///
/// Match determines if one attribute "matches" another. For
/// attributes that store flags, a match may be different from
/// an equals. For example, a filter of SetValid matches a
/// filter of All, because All is a merge of all filter values.
///
public override bool Match(object value)
{
PropertyFilterAttribute a = value as PropertyFilterAttribute;
if (a == null) return false;
return ((_filter & a._filter) == _filter);
}
#endregion Public Methods
//------------------------------------------------------
//
// Public Operators
//
//-----------------------------------------------------
//------------------------------------------------------
//
// Public Properties
//
//------------------------------------------------------
#region Public Properties
///
/// The filter value passed into the constructor.
///
public PropertyFilterOptions Filter
{
get { return _filter; }
}
#endregion Public Properties
//-----------------------------------------------------
//
// Public Events
//
//------------------------------------------------------
//-----------------------------------------------------
//
// Public Fields
//
//-----------------------------------------------------
#region Public Fields
///
/// Attributes may declare a Default field that indicates
/// what should be done if the attribute is not defined.
/// Our default is to return all properties.
///
[SuppressMessage("Microsoft.Security", "CA2104:DoNotDeclareReadOnlyMutableReferenceTypes")]
public static readonly PropertyFilterAttribute Default = new PropertyFilterAttribute(PropertyFilterOptions.All);
#endregion Public Fields
//-----------------------------------------------------
//
// Private Fields
//
//------------------------------------------------------
#region Private Fields
private PropertyFilterOptions _filter;
#endregion Private Fields
}
}
// 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
- BoundsDrawingContextWalker.cs
- DataKeyCollection.cs
- XmlCollation.cs
- TraceInternal.cs
- Trace.cs
- DoubleAnimationUsingPath.cs
- ChildrenQuery.cs
- FaultContext.cs
- WebServiceData.cs
- TypeUtils.cs
- OletxVolatileEnlistment.cs
- StringToken.cs
- RowToParametersTransformer.cs
- Slider.cs
- AsyncStreamReader.cs
- MultipartContentParser.cs
- XmlText.cs
- XmlNavigatorStack.cs
- ConfigXmlComment.cs
- storepermissionattribute.cs
- OdbcException.cs
- UpdatePanelControlTrigger.cs
- ImageListUtils.cs
- DiffuseMaterial.cs
- TextTreeText.cs
- DataPagerFieldItem.cs
- ControlAdapter.cs
- TrackingQuery.cs
- ExtensionWindowHeader.cs
- HashCodeCombiner.cs
- ProviderBase.cs
- SoapObjectWriter.cs
- HttpGetServerProtocol.cs
- AsyncDataRequest.cs
- TaiwanLunisolarCalendar.cs
- TextElementEditingBehaviorAttribute.cs
- SimpleBitVector32.cs
- ParameterDataSourceExpression.cs
- Imaging.cs
- QilGenerator.cs
- PhysicalAddress.cs
- ZipIOModeEnforcingStream.cs
- RtfControls.cs
- FixedHyperLink.cs
- WebControlsSection.cs
- OleDbErrorCollection.cs
- XmlDownloadManager.cs
- ButtonFieldBase.cs
- DurableServiceAttribute.cs
- XmlEncoding.cs
- ItemsControl.cs
- RelatedEnd.cs
- DeferredReference.cs
- HasActivatableWorkflowEvent.cs
- XmlSchemaAll.cs
- DynamicFilter.cs
- EntityDataSourceReferenceGroup.cs
- SchemaMapping.cs
- ConfigurationSectionCollection.cs
- ReadOnlyHierarchicalDataSource.cs
- NativeMethods.cs
- ValueSerializer.cs
- Roles.cs
- SemanticBasicElement.cs
- CachedBitmap.cs
- CodeIdentifiers.cs
- TransactionException.cs
- FreezableDefaultValueFactory.cs
- GacUtil.cs
- CurrentChangedEventManager.cs
- XmlSignatureProperties.cs
- CodeIdentifiers.cs
- TraceUtils.cs
- Image.cs
- TimeSpanValidatorAttribute.cs
- StrongName.cs
- List.cs
- Trace.cs
- DataTransferEventArgs.cs
- SemaphoreFullException.cs
- MouseGestureConverter.cs
- AttachedPropertyBrowsableForTypeAttribute.cs
- GetTokenRequest.cs
- Range.cs
- RegexFCD.cs
- CodeStatement.cs
- ImageBrush.cs
- ProjectionCamera.cs
- KnownTypeDataContractResolver.cs
- ConfigurationSettings.cs
- EventMappingSettingsCollection.cs
- SubMenuStyle.cs
- StateItem.cs
- ResourcePart.cs
- TransformationRules.cs
- RemotingClientProxy.cs
- Int16AnimationUsingKeyFrames.cs
- ProgressBarRenderer.cs
- XmlNamespaceMappingCollection.cs
- WindowsScrollBarBits.cs