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
- SingleConverter.cs
- EventHandlerList.cs
- WebPartConnectionsCloseVerb.cs
- GroupItem.cs
- LinkedResource.cs
- DependencyProperty.cs
- FieldNameLookup.cs
- EncodingNLS.cs
- EditorAttribute.cs
- QueryAccessibilityHelpEvent.cs
- ProgramNode.cs
- InternalConfigSettingsFactory.cs
- XmlByteStreamWriter.cs
- SoapClientProtocol.cs
- SignedXml.cs
- SqlCharStream.cs
- CalendarData.cs
- ContextBase.cs
- PackageRelationshipCollection.cs
- HotSpotCollection.cs
- InputScopeManager.cs
- ChannelFactory.cs
- XpsFilter.cs
- HandlerFactoryWrapper.cs
- PathFigureCollection.cs
- ListBindableAttribute.cs
- BidOverLoads.cs
- FlowDocumentReaderAutomationPeer.cs
- TreeViewEvent.cs
- TextSelectionProcessor.cs
- IsolatedStorageFile.cs
- HttpResponseHeader.cs
- ObjectSecurityT.cs
- BasicCellRelation.cs
- PeerNameRecordCollection.cs
- XhtmlBasicCalendarAdapter.cs
- EventSinkActivity.cs
- SqlUnionizer.cs
- ProgressChangedEventArgs.cs
- CompleteWizardStep.cs
- ListBoxItemAutomationPeer.cs
- SqlExpander.cs
- InternalSafeNativeMethods.cs
- DnsPermission.cs
- WindowsFormsHelpers.cs
- EventLogEntry.cs
- BitmapCodecInfo.cs
- ProfileProvider.cs
- ProcessModelInfo.cs
- WhereQueryOperator.cs
- CookieHandler.cs
- ArraySortHelper.cs
- WindowsGraphicsWrapper.cs
- HttpListenerException.cs
- ObjectDataProvider.cs
- ApplicationDirectory.cs
- DataTableNewRowEvent.cs
- SiteMapDataSource.cs
- HtmlInputImage.cs
- ZipIOExtraFieldElement.cs
- StandardBindingOptionalReliableSessionElement.cs
- ResXDataNode.cs
- NewArrayExpression.cs
- SqlDelegatedTransaction.cs
- IItemContainerGenerator.cs
- Decorator.cs
- MenuItemStyle.cs
- DPAPIProtectedConfigurationProvider.cs
- DesignerDataSchemaClass.cs
- DebugView.cs
- InkCanvasFeedbackAdorner.cs
- TextRunCacheImp.cs
- PropertyGridDesigner.cs
- ContractCodeDomInfo.cs
- ObjectItemCollectionAssemblyCacheEntry.cs
- RemotingAttributes.cs
- BamlResourceDeserializer.cs
- HtmlElementCollection.cs
- TextBoxAutomationPeer.cs
- RectangleHotSpot.cs
- Exception.cs
- EntityDataSourceContextCreatedEventArgs.cs
- UnsafeNativeMethods.cs
- TimelineGroup.cs
- ConfigurationElement.cs
- IsolatedStoragePermission.cs
- DataGridViewTextBoxEditingControl.cs
- CheckBoxField.cs
- XmlConvert.cs
- UpdatePanelTrigger.cs
- CodeAttributeArgument.cs
- XomlDesignerLoader.cs
- CompilationUtil.cs
- TypeExtensionConverter.cs
- XmlMembersMapping.cs
- UInt16.cs
- Aggregates.cs
- DateTimeOffset.cs
- TableSectionStyle.cs
- TypeResolver.cs