VBIdentifierName.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 / View / VBIdentifierName.cs / 1407647 / VBIdentifierName.cs

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

namespace System.Activities.Presentation.View 
{
    using System.Windows; 
    using Microsoft.VisualBasic; 
    using System.CodeDom.Compiler;
    using System.Globalization; 
    using System.ComponentModel;
    using System.Xaml;
    using System.Xml;
 
    internal class VBIdentifierName : DependencyObject
    { 
        public static readonly DependencyProperty IdentifierNameProperty = 
            DependencyProperty.Register("IdentifierName", typeof(string), typeof(VBIdentifierName), new UIPropertyMetadata(OnIdentifierNameChanged));
 
        public static readonly DependencyProperty IsValidProperty =
            DependencyProperty.Register("IsValid", typeof(bool), typeof(VBIdentifierName));

        public static readonly DependencyProperty ErrorMessageProperty = 
            DependencyProperty.Register("ErrorMessage", typeof(string), typeof(VBIdentifierName));
 
        static VBCodeProvider vbProvider; 
        static XamlSchemaContext xamlContext = new XamlSchemaContext();
        static XamlType xamlType = new XamlType(typeof(string), xamlContext); 

        bool checkAgainstXaml;

        VBCodeProvider VBProvider 
        {
            get 
            { 
                if (vbProvider == null)
                { 
                    vbProvider = CodeDomProvider.CreateProvider("VisualBasic") as VBCodeProvider;
                }
                return vbProvider;
            } 
        }
 
        public string ErrorMessage 
        {
            get { return (string)GetValue(ErrorMessageProperty); } 
            set { SetValue(ErrorMessageProperty, value); }
        }

        public bool IsValid 
        {
            get { return (bool)GetValue(IsValidProperty); } 
            set { SetValue(IsValidProperty, value); } 
        }
 
        public string IdentifierName
        {
            get { return (string)GetValue(IdentifierNameProperty); }
            set { SetValue(IdentifierNameProperty, value); } 
        }
 
        public bool CheckAgainstXaml 
        {
            get 
            {
                return this.checkAgainstXaml;
            }
        } 

        public VBIdentifierName() 
        { 
            this.checkAgainstXaml = false;
        } 

        public VBIdentifierName(bool checkAgainstXaml)
        {
            this.checkAgainstXaml = checkAgainstXaml; 
        }
 
        static void OnIdentifierNameChanged(DependencyObject sender, DependencyPropertyChangedEventArgs e) 
        {
            ((VBIdentifierName)sender).OnIdentifierNameChanged(); 
        }

        internal static bool IsValidXamlName(string name)
        { 
            bool isValid = new XamlMember(name, xamlType, false).IsNameValid;
 
            if (isValid) 
            {
                //Work around TFS bug #825815, in some cases, XamlMember.IsNameValid returns true but it's not valid Xml Name. 
                try
                {
                    XmlConvert.VerifyName(name);
                } 
                catch (XmlException)
                { 
                    isValid = false; 
                }
            } 

            return isValid;
        }
 
        void OnIdentifierNameChanged()
        { 
            string trimedName = this.IdentifierName; 
            if (this.CheckAgainstXaml && !VBIdentifierName.IsValidXamlName(trimedName))
            { 
                this.IsValid = false;
                this.ErrorMessage = string.Format(CultureInfo.CurrentUICulture, SR.InvalidXamlMemberName, trimedName);
            }
            else if(!this.VBProvider.IsValidIdentifier(trimedName)) 
            {
                this.IsValid = false; 
                this.ErrorMessage = string.Format(CultureInfo.CurrentUICulture, SR.InvalidVisualBasicIdentifier, trimedName); 
            }
            else if (trimedName.StartsWith("[", StringComparison.Ordinal) && trimedName.EndsWith("]", StringComparison.Ordinal)) 
            {
                this.IsValid = false;
                this.ErrorMessage = string.Format(CultureInfo.CurrentUICulture, SR.InvalidVisualBasicIdentifier, trimedName);
            } 
            else
            { 
                this.IsValid = true; 
                this.ErrorMessage = string.Empty;
            } 
        }
    }
}

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