Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / Orcas / QFE / wpf / src / Base / System / ComponentModel / PropertyFilterAttribute.cs / 1 / 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
- XmlSchemaGroup.cs
- CachingParameterInspector.cs
- ClientFormsAuthenticationCredentials.cs
- TextSearch.cs
- DataPagerFieldCommandEventArgs.cs
- HtmlWindow.cs
- SetStoryboardSpeedRatio.cs
- ObjectDataSourceStatusEventArgs.cs
- ApplicationException.cs
- HostingEnvironment.cs
- mil_sdk_version.cs
- DynamicResourceExtensionConverter.cs
- PropertyValidationContext.cs
- CheckBoxFlatAdapter.cs
- DetailsViewPagerRow.cs
- NotifyInputEventArgs.cs
- QilStrConcatenator.cs
- RequestCacheValidator.cs
- Translator.cs
- RoleGroupCollection.cs
- WindowsScrollBarBits.cs
- DispatchOperation.cs
- XmlSubtreeReader.cs
- ImageProxy.cs
- WebFormsRootDesigner.cs
- DataRowCollection.cs
- CodeCompiler.cs
- WebServiceTypeData.cs
- ReadContentAsBinaryHelper.cs
- GlyphCache.cs
- BooleanStorage.cs
- WebHttpBinding.cs
- PointAnimationUsingPath.cs
- OleDbPermission.cs
- WebPartsPersonalization.cs
- WebFormDesignerActionService.cs
- RtfToXamlReader.cs
- IndentTextWriter.cs
- serverconfig.cs
- StyleBamlRecordReader.cs
- DocumentApplication.cs
- JsonReaderWriterFactory.cs
- EditingCoordinator.cs
- UriSection.cs
- CustomLineCap.cs
- BuildManagerHost.cs
- TabControlCancelEvent.cs
- Timer.cs
- SessionParameter.cs
- XmlnsDefinitionAttribute.cs
- CapabilitiesState.cs
- CharacterMetricsDictionary.cs
- RtfToXamlLexer.cs
- ThreadStateException.cs
- PostBackOptions.cs
- DataSourceView.cs
- UnauthorizedAccessException.cs
- StackBuilderSink.cs
- TraceListener.cs
- CalendarAutomationPeer.cs
- TaskHelper.cs
- TextRunCache.cs
- TreeViewCancelEvent.cs
- DeploymentSection.cs
- BinaryNode.cs
- SelectionPattern.cs
- NativeMethods.cs
- InheritanceRules.cs
- PrinterResolution.cs
- TextBoxAutomationPeer.cs
- ItemCollection.cs
- documentsequencetextpointer.cs
- Transform3DGroup.cs
- DataListDesigner.cs
- BitmapDecoder.cs
- SqlRetyper.cs
- SlipBehavior.cs
- ReliableSessionBindingElementImporter.cs
- TimeSpan.cs
- SystemParameters.cs
- ExceptionHandlerDesigner.cs
- ProcessModelInfo.cs
- XmlRawWriter.cs
- LoginDesignerUtil.cs
- TrimSurroundingWhitespaceAttribute.cs
- SynchronizationFilter.cs
- DataBindingExpressionBuilder.cs
- DataControlField.cs
- WindowsPen.cs
- SoapCodeExporter.cs
- TcpConnectionPoolSettingsElement.cs
- XamlSerializerUtil.cs
- DataServiceException.cs
- LabelExpression.cs
- GlobalizationAssembly.cs
- InfoCardSymmetricCrypto.cs
- XPathMultyIterator.cs
- ValidatingCollection.cs
- CompletionCallbackWrapper.cs
- ProxyElement.cs