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
- ManipulationDeltaEventArgs.cs
- Setter.cs
- ObjectQueryExecutionPlan.cs
- DataTemplateSelector.cs
- HttpInputStream.cs
- EditBehavior.cs
- SoapInteropTypes.cs
- SqlServer2KCompatibilityCheck.cs
- ThreadAttributes.cs
- ImageListStreamer.cs
- _ContextAwareResult.cs
- GenericEnumerator.cs
- FixedSOMSemanticBox.cs
- ProcessHostServerConfig.cs
- CompoundFileStreamReference.cs
- ProtocolsConfiguration.cs
- CollectionCodeDomSerializer.cs
- OperatorExpressions.cs
- AffineTransform3D.cs
- SafeNativeMethods.cs
- SQLDateTimeStorage.cs
- SectionVisual.cs
- OracleConnection.cs
- RequestCacheValidator.cs
- X509CertificateTrustedIssuerElementCollection.cs
- CustomAttributeFormatException.cs
- ModelPerspective.cs
- SqlSelectStatement.cs
- EntityDataSourceWrapperCollection.cs
- MatrixTransform.cs
- UnsafeNativeMethods.cs
- ActivityExecutionFilter.cs
- XmlReflectionMember.cs
- SqlDelegatedTransaction.cs
- ItemMap.cs
- SuppressMessageAttribute.cs
- Wizard.cs
- ResolvedKeyFrameEntry.cs
- InputLanguageManager.cs
- TreeBuilderXamlTranslator.cs
- Overlapped.cs
- SplitContainerDesigner.cs
- IndexOutOfRangeException.cs
- StyleCollection.cs
- DataListGeneralPage.cs
- PixelFormats.cs
- Int32CAMarshaler.cs
- HtmlElement.cs
- ByteViewer.cs
- InputScope.cs
- MarkerProperties.cs
- PieceNameHelper.cs
- SerialStream.cs
- ColumnMapTranslator.cs
- EnumBuilder.cs
- DecoderFallbackWithFailureFlag.cs
- ResXDataNode.cs
- BasicBrowserDialog.designer.cs
- GeneralTransform2DTo3DTo2D.cs
- MaskedTextBox.cs
- LineGeometry.cs
- MenuRendererStandards.cs
- XmlnsPrefixAttribute.cs
- ProviderBase.cs
- SafePEFileHandle.cs
- RootBrowserWindowProxy.cs
- XamlSerializer.cs
- LicFileLicenseProvider.cs
- SqlRetyper.cs
- Serializer.cs
- PropertyCollection.cs
- DotExpr.cs
- SessionStateModule.cs
- XmlWriterDelegator.cs
- ScriptManager.cs
- StreamGeometry.cs
- UrlAuthFailedErrorFormatter.cs
- _ListenerAsyncResult.cs
- ToolBarButtonClickEvent.cs
- BindStream.cs
- PropertyCollection.cs
- StyleBamlTreeBuilder.cs
- DataServiceKeyAttribute.cs
- StringKeyFrameCollection.cs
- ListSourceHelper.cs
- NestedContainer.cs
- DataObjectMethodAttribute.cs
- HyperLink.cs
- Matrix3DStack.cs
- RemotingClientProxy.cs
- SqlClientMetaDataCollectionNames.cs
- ProxyWebPart.cs
- Shape.cs
- TaiwanLunisolarCalendar.cs
- OracleNumber.cs
- XmlEncoding.cs
- OdbcConnectionPoolProviderInfo.cs
- MouseGestureValueSerializer.cs
- ParameterModifier.cs
- InvalidDocumentContentsException.cs