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
- AssemblyBuilder.cs
- HtmlTableRowCollection.cs
- RSAOAEPKeyExchangeDeformatter.cs
- PointF.cs
- FormatConvertedBitmap.cs
- FunctionDescription.cs
- MarkedHighlightComponent.cs
- FormsAuthenticationUserCollection.cs
- httpstaticobjectscollection.cs
- WindowsListViewItem.cs
- WebPartConnectionsEventArgs.cs
- DataGridViewRowPostPaintEventArgs.cs
- AssociationSet.cs
- AttributeTable.cs
- ClientTarget.cs
- TargetParameterCountException.cs
- RoutingChannelExtension.cs
- Connector.xaml.cs
- IISMapPath.cs
- BasicCellRelation.cs
- DataObject.cs
- Floater.cs
- BackEase.cs
- QueryCursorEventArgs.cs
- TextPointer.cs
- IdentitySection.cs
- CatalogPartCollection.cs
- Line.cs
- DoubleCollectionValueSerializer.cs
- AddInServer.cs
- MailAddressParser.cs
- TextEffectResolver.cs
- Type.cs
- ContentElementAutomationPeer.cs
- RemoteEndpointMessageProperty.cs
- ExceptionCollection.cs
- GenericIdentity.cs
- SchemaTableOptionalColumn.cs
- SqlProviderServices.cs
- LayoutInformation.cs
- BStrWrapper.cs
- Marshal.cs
- Int64Storage.cs
- InteropAutomationProvider.cs
- TokenBasedSet.cs
- DataError.cs
- EntityEntry.cs
- LifetimeServices.cs
- SingleObjectCollection.cs
- KoreanCalendar.cs
- Quad.cs
- ScriptingJsonSerializationSection.cs
- DeferrableContentConverter.cs
- DataTableMappingCollection.cs
- LOSFormatter.cs
- XmlSchemaImporter.cs
- ReflectionServiceProvider.cs
- CaseInsensitiveOrdinalStringComparer.cs
- BasicKeyConstraint.cs
- StylusLogic.cs
- NullableLongAverageAggregationOperator.cs
- SqlDataSourceCache.cs
- ChannelManager.cs
- ParagraphVisual.cs
- UnsafeNativeMethodsTablet.cs
- HttpRuntimeSection.cs
- SafeFileMappingHandle.cs
- WebPartTracker.cs
- StandardBindingElementCollection.cs
- MemoryMappedView.cs
- Label.cs
- MemberExpression.cs
- StaticFileHandler.cs
- ColumnResizeAdorner.cs
- ParenthesizePropertyNameAttribute.cs
- InheritablePropertyChangeInfo.cs
- GroupLabel.cs
- DeploymentSection.cs
- TextBoxBase.cs
- mediaeventshelper.cs
- XmlSchemaExporter.cs
- WebConfigurationFileMap.cs
- AnnotationHelper.cs
- _SslState.cs
- DesignerRegionMouseEventArgs.cs
- ToolStripItemGlyph.cs
- FormViewUpdateEventArgs.cs
- ToolStripDesignerAvailabilityAttribute.cs
- TypefaceMap.cs
- UnsafeNativeMethods.cs
- ExpressionParser.cs
- TableColumn.cs
- SharedDp.cs
- QuaternionKeyFrameCollection.cs
- EncodingFallbackAwareXmlTextWriter.cs
- PageCatalogPart.cs
- ErrorTolerantObjectWriter.cs
- URIFormatException.cs
- TileBrush.cs
- GlobalProxySelection.cs