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
- DigitalSignature.cs
- ButtonColumn.cs
- AlgoModule.cs
- FixUp.cs
- StickyNoteContentControl.cs
- XmlBaseReader.cs
- diagnosticsswitches.cs
- TextSelection.cs
- DocumentAutomationPeer.cs
- AggregationMinMaxHelpers.cs
- safelink.cs
- SqlInternalConnection.cs
- DynamicPhysicalDiscoSearcher.cs
- Animatable.cs
- AttachedAnnotationChangedEventArgs.cs
- CfgParser.cs
- Condition.cs
- BufferedStream.cs
- SqlXmlStorage.cs
- TickBar.cs
- UITypeEditor.cs
- ClonableStack.cs
- DataSvcMapFileSerializer.cs
- ContractMapping.cs
- MulticastIPAddressInformationCollection.cs
- _Semaphore.cs
- ImageList.cs
- ReferentialConstraintRoleElement.cs
- CommandBindingCollection.cs
- XmlSignatureProperties.cs
- InfoCardKeyedHashAlgorithm.cs
- StatusBarItem.cs
- ActiveXHelper.cs
- _BaseOverlappedAsyncResult.cs
- DispatcherOperation.cs
- EraserBehavior.cs
- SiteMapDataSourceView.cs
- PropertyGridEditorPart.cs
- RelatedImageListAttribute.cs
- Assembly.cs
- CommandHelpers.cs
- WebServiceResponse.cs
- ConvertTextFrag.cs
- DataGridColumnDropSeparator.cs
- UnsettableComboBox.cs
- DataObjectEventArgs.cs
- MinMaxParagraphWidth.cs
- ValidationSummary.cs
- XmlTextReaderImpl.cs
- Profiler.cs
- PointConverter.cs
- EntityKey.cs
- PropertyInformation.cs
- MetadataUtil.cs
- PassportAuthentication.cs
- Attributes.cs
- InputLanguageManager.cs
- securitycriticaldataformultiplegetandset.cs
- EndEvent.cs
- GPPOINT.cs
- ComplexBindingPropertiesAttribute.cs
- RijndaelCryptoServiceProvider.cs
- NetTcpBinding.cs
- EnvelopeVersion.cs
- ConnectionStringsSection.cs
- XmlText.cs
- EncodedStreamFactory.cs
- DataColumnCollection.cs
- ResourcePool.cs
- ChangeInterceptorAttribute.cs
- ArithmeticException.cs
- SiteMapSection.cs
- DBSqlParser.cs
- ClientSession.cs
- UnitySerializationHolder.cs
- CommandBindingCollection.cs
- RSAOAEPKeyExchangeDeformatter.cs
- PropagatorResult.cs
- TailCallAnalyzer.cs
- ToolStripPanelCell.cs
- PhonemeEventArgs.cs
- XmlHelper.cs
- FullTextBreakpoint.cs
- KeyPressEvent.cs
- COM2PropertyDescriptor.cs
- SplitterEvent.cs
- NegatedConstant.cs
- FileIOPermission.cs
- XmlAtomicValue.cs
- SingleResultAttribute.cs
- FixedSOMImage.cs
- ListBindableAttribute.cs
- WS2007HttpBindingElement.cs
- TemplateXamlTreeBuilder.cs
- ToolBarButton.cs
- XsltContext.cs
- WorkflowOperationErrorHandler.cs
- ImageSource.cs
- PingOptions.cs
- Geometry3D.cs