PropertyFilterAttribute.cs source code in C# .NET

Source code for the .NET framework in C#

                        

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

Network programming in C#, Network Programming in VB.NET, Network Programming in .NET
This book is available now!
Buy at Amazon US or
Buy at Amazon UK