Code:
/ 4.0 / 4.0 / 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.
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
- EncoderNLS.cs
- SupportsEventValidationAttribute.cs
- MultilineStringConverter.cs
- StylusButtonCollection.cs
- ConstNode.cs
- CoreChannel.cs
- PointConverter.cs
- SqlClientWrapperSmiStream.cs
- BaseValidatorDesigner.cs
- CacheMemory.cs
- SqlVisitor.cs
- ReferenceConverter.cs
- X509Certificate2.cs
- TextParaClient.cs
- Property.cs
- SqlResolver.cs
- SimpleWorkerRequest.cs
- WebPartTransformer.cs
- BamlLocalizer.cs
- ContextQuery.cs
- GridViewColumnCollectionChangedEventArgs.cs
- PageTheme.cs
- FunctionDetailsReader.cs
- MsmqBindingElementBase.cs
- ECDiffieHellman.cs
- XmlExtensionFunction.cs
- X509Certificate.cs
- sqlinternaltransaction.cs
- WebServiceMethodData.cs
- EmptyReadOnlyDictionaryInternal.cs
- DbParameterHelper.cs
- Effect.cs
- ConsoleEntryPoint.cs
- DataGridBoolColumn.cs
- IgnoreFileBuildProvider.cs
- ErrorLog.cs
- PriorityChain.cs
- RectangleGeometry.cs
- MouseGestureConverter.cs
- DBPropSet.cs
- TreeNodeStyleCollection.cs
- PartManifestEntry.cs
- DataQuery.cs
- WebErrorHandler.cs
- DataTemplate.cs
- ModelTreeEnumerator.cs
- DragEventArgs.cs
- COM2ExtendedBrowsingHandler.cs
- QueryExpression.cs
- MatrixTransform3D.cs
- DeadCharTextComposition.cs
- ObjectMemberMapping.cs
- FontCollection.cs
- UnsafeNativeMethods.cs
- UriExt.cs
- ValidationSummaryDesigner.cs
- SafeTimerHandle.cs
- WindowsListViewScroll.cs
- BaseDataBoundControl.cs
- TableLayoutSettings.cs
- XamlVector3DCollectionSerializer.cs
- BitmapEncoder.cs
- GeneralEndpointIdentity.cs
- Attribute.cs
- RootBrowserWindow.cs
- QilPatternFactory.cs
- Color.cs
- StringArrayConverter.cs
- CqlParserHelpers.cs
- SqlTriggerAttribute.cs
- Vector3DAnimation.cs
- StringDictionaryCodeDomSerializer.cs
- TileModeValidation.cs
- OdbcDataReader.cs
- CompiledAction.cs
- BoundingRectTracker.cs
- SchemaEntity.cs
- MatrixConverter.cs
- TimeStampChecker.cs
- MouseGestureValueSerializer.cs
- NameNode.cs
- SmiXetterAccessMap.cs
- Currency.cs
- RequestChannelBinder.cs
- TransformDescriptor.cs
- PersonalizableAttribute.cs
- _BasicClient.cs
- RequiredFieldValidator.cs
- OrderedHashRepartitionStream.cs
- RegexParser.cs
- ErrorRuntimeConfig.cs
- XmlUnspecifiedAttribute.cs
- iisPickupDirectory.cs
- ResourceKey.cs
- XmlNamedNodeMap.cs
- HasCopySemanticsAttribute.cs
- WinCategoryAttribute.cs
- WorkflowView.cs
- ContextMenu.cs
- WorkflowInstanceTerminatedRecord.cs