EditorOptionAttribute.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 / ndp / cdf / src / NetFx40 / Tools / System.Activities.Presentation / System / Activities / Presentation / EditorOptionAttribute.cs / 1305376 / EditorOptionAttribute.cs

                            //---------------------------------------------------------------- 
// Copyright (c) Microsoft Corporation.  All rights reserved.
//---------------------------------------------------------------

namespace System.Activities.Presentation.PropertyEditing 
{
    using System.Runtime; 
    using System.Collections; 

    [Fx.Tag.XamlVisible(false)] 
    [AttributeUsage(AttributeTargets.Property | AttributeTargets.Class, AllowMultiple = true)]
    sealed class EditorOptionsAttribute : Attribute
    {
        public string Name { get; set; } 
        public object Value { get; set; }
        //TypeId is needed so that multiple EditorOptionsAttribute could be added to the same type/property 
        public override object TypeId 
        {
            get 
            {
                return new EditorOptionsAttributeTypeId
                {
                    BaseTypeId = base.TypeId, 
                    Name = this.Name,
                    Value = this.Value 
                }; 
            }
        } 

        public static T GetOptionValue(IEnumerable attributes, string optionName, T defaultValue)
        {
            object optionValue; 
            if (TryGetOptionValue(attributes, optionName, out optionValue))
            { 
                return (T)optionValue; 
            }
            return defaultValue; 
        }

        public static bool TryGetOptionValue(IEnumerable attributes, string optionName, out object optionValue)
        { 
            foreach (Attribute attribute in attributes)
            { 
                EditorOptionsAttribute optionAttribute = attribute as EditorOptionsAttribute; 
                if (optionAttribute != null && optionAttribute.Name.Equals(optionName))
                { 
                    optionValue = optionAttribute.Value;
                    return true;
                }
            } 
            optionValue = null;
            return false; 
        } 

        //A class to uniquely identify a name-value pair 
        class EditorOptionsAttributeTypeId
        {
            public object BaseTypeId { get; set; }
            public string Name { get; set; } 
            public object Value { get; set; }
 
            public override bool Equals(object obj) 
            {
                EditorOptionsAttributeTypeId that = obj as EditorOptionsAttributeTypeId; 
                if (that == null) return false;
                return this.BaseTypeId == that.BaseTypeId &&
                    string.Equals(this.Name, that.Name) &&
                    object.Equals(this.Value, that.Value); 
            }
 
            public override int GetHashCode() 
            {
                return 
                    (BaseTypeId == null ? 0 : BaseTypeId.GetHashCode()) ^
                    (Name == null ? 0 : Name.GetHashCode()) ^
                    (Value == null ? 0 : Value.GetHashCode());
            } 
        }
    } 
} 

// File provided for Reference Use Only by Microsoft Corporation (c) 2007.


                        

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