MetadataProperty.cs source code in C# .NET

Source code for the .NET framework in C#

                        

Code:

/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / Orcas / SP / ndp / fx / src / DataEntity / System / Data / Metadata / Edm / MetadataProperty.cs / 3 / MetadataProperty.cs

                            //---------------------------------------------------------------------- 
// 
//      Copyright (c) Microsoft Corporation.  All rights reserved.
// 
// 
// @owner  [....], [....]
//--------------------------------------------------------------------- 
 
using System;
using System.Collections.Generic; 
using System.Data.Common;
using System.Diagnostics;
using System.Reflection;
 
namespace System.Data.Metadata.Edm
{ 
    ///  
    /// Class representing a metadata attribute for an item
    ///  
    public sealed class MetadataProperty : MetadataItem
    {
        #region Constructors
        ///  
        /// The constructor for MetadataProperty taking in a name, a TypeUsage object, and a value for the attribute
        ///  
        /// The name of this MetadataProperty 
        /// The TypeUsage describing the type of this MetadataProperty
        /// The value for this attribute 
        /// Thrown if typeUsage argument is null
        internal MetadataProperty(string name, TypeUsage typeUsage, object value)
        {
            EntityUtil.GenericCheckArgumentNull(typeUsage, "typeUsage"); 

            _name = name; 
            _value = value; 
            _typeUsage = typeUsage;
            _propertyKind = PropertyKind.Extended; 
        }

        /// 
        /// The constructor for MetadataProperty taking in all the ingredients for creating TypeUsage and the actual value 
        /// 
        /// The name of the attribute 
        /// The edm type of the attribute 
        /// Whether the collection type of the given edm type should be used
        /// The value of the attribute 
        internal MetadataProperty(string name, EdmType edmType, bool isCollectionType, object value)
        {
            EntityUtil.CheckArgumentNull(edmType, "edmType");
 
            _name = name;
            _value = value; 
            if (isCollectionType) 
            {
                _typeUsage = TypeUsage.Create(edmType.GetCollectionType()); 
            }
            else
            {
                _typeUsage = TypeUsage.Create(edmType); 
            }
            _propertyKind = PropertyKind.System; 
        } 
        #endregion
 
        #region Fields
        private string _name;
        private PropertyKind _propertyKind;
        private object _value; 
        private TypeUsage _typeUsage;
        #endregion 
 
        #region Properties
        ///  
        /// Returns the kind of the type
        /// 
        public override BuiltInTypeKind BuiltInTypeKind { get { return BuiltInTypeKind.MetadataProperty; } }
 
        /// 
        /// Gets the identity of this item 
        ///  
        internal override string Identity
        { 
            get
            {
                return Name;
            } 
        }
 
        ///  
        /// Gets/Sets the name of this MetadataProperty
        ///  
        [MetadataProperty(PrimitiveTypeKind.String, false)]
        public string Name
        {
            get 
            {
                // The name is immutable, so it should be safe to always get it from the field 
                return _name; 
            }
        } 

        /// 
        /// Gets/Sets the value of this MetadataProperty
        ///  
        /// Thrown if the MetadataProperty instance is in readonly state
        [MetadataProperty(typeof(Object), false)] 
        public object Value 
        {
            get 
            {
                // Check if we're redirecting to an MetadataItem system property
                MetadataPropertyValue redirectValue = _value as MetadataPropertyValue;
                if (null != redirectValue) 
                {
                    return redirectValue.GetValue(); 
                } 

                // If not, return the actual stored value 
                return _value;
            }
        }
 
        /// 
        /// Gets/Sets the TypeUsage object describing the type of this attribute 
        ///  
        /// Thrown if value passed into setter is null
        /// Thrown if the MetadataProperty instance is in readonly state 
        [MetadataProperty(BuiltInTypeKind.TypeUsage, false)]
        public TypeUsage TypeUsage
        {
            get 
            {
                return _typeUsage; 
            } 
        }
        #endregion 

        #region Methods
        /// 
        /// Sets this item to be readonly, once this is set, the item will never be writable again. 
        /// 
        internal override void SetReadOnly() 
        { 
            if (!IsReadOnly)
            { 
                base.SetReadOnly();

                // TypeUsage is always readonly, no need to set _typeUsage
            } 
        }
 
        ///  
        /// Returns the kind of the attribute
        ///  
        public PropertyKind PropertyKind
        {
            get
            { 
                return _propertyKind;
            } 
        } 
        #endregion
    } 
}

// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
//---------------------------------------------------------------------- 
// 
//      Copyright (c) Microsoft Corporation.  All rights reserved.
// 
// 
// @owner  [....], [....]
//--------------------------------------------------------------------- 
 
using System;
using System.Collections.Generic; 
using System.Data.Common;
using System.Diagnostics;
using System.Reflection;
 
namespace System.Data.Metadata.Edm
{ 
    ///  
    /// Class representing a metadata attribute for an item
    ///  
    public sealed class MetadataProperty : MetadataItem
    {
        #region Constructors
        ///  
        /// The constructor for MetadataProperty taking in a name, a TypeUsage object, and a value for the attribute
        ///  
        /// The name of this MetadataProperty 
        /// The TypeUsage describing the type of this MetadataProperty
        /// The value for this attribute 
        /// Thrown if typeUsage argument is null
        internal MetadataProperty(string name, TypeUsage typeUsage, object value)
        {
            EntityUtil.GenericCheckArgumentNull(typeUsage, "typeUsage"); 

            _name = name; 
            _value = value; 
            _typeUsage = typeUsage;
            _propertyKind = PropertyKind.Extended; 
        }

        /// 
        /// The constructor for MetadataProperty taking in all the ingredients for creating TypeUsage and the actual value 
        /// 
        /// The name of the attribute 
        /// The edm type of the attribute 
        /// Whether the collection type of the given edm type should be used
        /// The value of the attribute 
        internal MetadataProperty(string name, EdmType edmType, bool isCollectionType, object value)
        {
            EntityUtil.CheckArgumentNull(edmType, "edmType");
 
            _name = name;
            _value = value; 
            if (isCollectionType) 
            {
                _typeUsage = TypeUsage.Create(edmType.GetCollectionType()); 
            }
            else
            {
                _typeUsage = TypeUsage.Create(edmType); 
            }
            _propertyKind = PropertyKind.System; 
        } 
        #endregion
 
        #region Fields
        private string _name;
        private PropertyKind _propertyKind;
        private object _value; 
        private TypeUsage _typeUsage;
        #endregion 
 
        #region Properties
        ///  
        /// Returns the kind of the type
        /// 
        public override BuiltInTypeKind BuiltInTypeKind { get { return BuiltInTypeKind.MetadataProperty; } }
 
        /// 
        /// Gets the identity of this item 
        ///  
        internal override string Identity
        { 
            get
            {
                return Name;
            } 
        }
 
        ///  
        /// Gets/Sets the name of this MetadataProperty
        ///  
        [MetadataProperty(PrimitiveTypeKind.String, false)]
        public string Name
        {
            get 
            {
                // The name is immutable, so it should be safe to always get it from the field 
                return _name; 
            }
        } 

        /// 
        /// Gets/Sets the value of this MetadataProperty
        ///  
        /// Thrown if the MetadataProperty instance is in readonly state
        [MetadataProperty(typeof(Object), false)] 
        public object Value 
        {
            get 
            {
                // Check if we're redirecting to an MetadataItem system property
                MetadataPropertyValue redirectValue = _value as MetadataPropertyValue;
                if (null != redirectValue) 
                {
                    return redirectValue.GetValue(); 
                } 

                // If not, return the actual stored value 
                return _value;
            }
        }
 
        /// 
        /// Gets/Sets the TypeUsage object describing the type of this attribute 
        ///  
        /// Thrown if value passed into setter is null
        /// Thrown if the MetadataProperty instance is in readonly state 
        [MetadataProperty(BuiltInTypeKind.TypeUsage, false)]
        public TypeUsage TypeUsage
        {
            get 
            {
                return _typeUsage; 
            } 
        }
        #endregion 

        #region Methods
        /// 
        /// Sets this item to be readonly, once this is set, the item will never be writable again. 
        /// 
        internal override void SetReadOnly() 
        { 
            if (!IsReadOnly)
            { 
                base.SetReadOnly();

                // TypeUsage is always readonly, no need to set _typeUsage
            } 
        }
 
        ///  
        /// Returns the kind of the attribute
        ///  
        public PropertyKind PropertyKind
        {
            get
            { 
                return _propertyKind;
            } 
        } 
        #endregion
    } 
}

// 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