elementinformation.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 / fx / src / Configuration / System / Configuration / elementinformation.cs / 1305376 / elementinformation.cs

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

using System; 
using System.Configuration; 
using System.Collections.Specialized;
using System.ComponentModel; 
using System.Collections;
using System.Runtime.Serialization;

namespace System.Configuration 
{
 
    // ElementInformation 
    //
    // Expose information on Configuration Elements, and the 
    // properties that they contain
    //
    public sealed class ElementInformation
    { 
        private ConfigurationElement           _thisElement;
        private PropertyInformationCollection  _internalProperties; 
        private ConfigurationException[]       _errors; 

        internal ElementInformation(ConfigurationElement thisElement) { 
            _thisElement = thisElement;
        }

        // Properties 
        //
        // Retrieve Collection of properties within this element 
        // 
        public PropertyInformationCollection Properties
        { 
            get {
                if (_internalProperties == null) {
                    _internalProperties = new PropertyInformationCollection(_thisElement);
                } 

                return _internalProperties; 
            } 
        }
 
        // IsInherited
        //
        // Was this element inheritted, or was the property actually
        // set here 
        //
        public bool IsPresent { 
            get { 
                return _thisElement.ElementPresent;
            } 
        }

        // IsLocked
        // 
        // Is this property locked?
        // 
        public bool IsLocked { 
            get {
                return (((_thisElement.ItemLocked & ConfigurationValueFlags.Locked) != 0) && 
                        ((_thisElement.ItemLocked & ConfigurationValueFlags.Inherited) != 0));
            }
        }
 
        // IsCollection
        // 
        // Is this element a collection? 
        //
        public bool IsCollection { 
            get {
                ConfigurationElementCollection collection = _thisElement as ConfigurationElementCollection;
                if (collection == null) { // Try the default collection
                    if (_thisElement.Properties.DefaultCollectionProperty != null) { // this is not a collection but it may contain a default collection 
                        collection = _thisElement[_thisElement.Properties.DefaultCollectionProperty] as ConfigurationElementCollection;
                    } 
                } 

                return (collection != null); 
            }
        }

        // Internal method to fix SetRawXML defect... 
        internal PropertySourceInfo PropertyInfoInternal() {
            return _thisElement.PropertyInfoInternal(_thisElement.ElementTagName); 
        } 

        internal void ChangeSourceAndLineNumber(PropertySourceInfo sourceInformation) { 
            _thisElement.Values.ChangeSourceInfo(_thisElement.ElementTagName, sourceInformation);
        }

        // Source 
        //
        // What is the source file where this data came from 
        // 
        public string Source {
            get { 
                PropertySourceInfo psi = _thisElement.Values.GetSourceInfo(_thisElement.ElementTagName);

                if (psi == null) {
                    return null; 
                }
 
                return psi.FileName; 
            }
        } 

        // LineNumber
        //
        // What is the line number associated with the source 
        //
        // Note: 
        //   1 is the first line in the file.  0 is returned when there is no 
        //   source
        // 
        public int LineNumber {
            get {
                PropertySourceInfo psi = _thisElement.Values.GetSourceInfo(_thisElement.ElementTagName);
                if (psi == null) { 
                    return 0;
                } 
 
                return psi.LineNumber;
            } 
        }

        // Type
        // 
        // What is the type for the element
        // 
        public Type Type { 
            get {
                return _thisElement.GetType(); 
            }
        }

        // Validator 
        //
        // What is the validator to validate the element? 
        // 
        public ConfigurationValidatorBase Validator {
            get { 
                return _thisElement.ElementProperty.Validator;
            }
        }
 
        // GetReadOnlyErrorsList
        // 
        // Get a Read Only list of the exceptions for this 
        // element
        // 
        private ConfigurationException[] GetReadOnlyErrorsList() {
            ArrayList                arrayList;
            int                      count;
            ConfigurationException[] exceptionList; 

            arrayList = _thisElement.GetErrorsList(); 
            count     = arrayList.Count; 

            // Create readonly array 
            exceptionList = new ConfigurationException[arrayList.Count];

            if (count != 0) {
                arrayList.CopyTo(exceptionList, 0); 
            }
 
            return exceptionList; 
        }
 
        // Errors
        //
        // Retrieve the _errors for this element and sub elements
        // 
        public ICollection Errors {
            get { 
                if (_errors == null) { 
                    _errors = GetReadOnlyErrorsList();
                } 

                return _errors;
            }
        } 
    }
} 

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