XmlnsDefinitionAttribute.cs source code in C# .NET

Source code for the .NET framework in C#

                        

Code:

/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / Orcas / NetFXw7 / wpf / src / Base / System / Windows / Markup / XmlnsDefinitionAttribute.cs / 1 / XmlnsDefinitionAttribute.cs

                            //------------------------------------------------------------------------ 
//
//  Microsoft Windows Client Platform
//  Copyright (C) Microsoft Corporation, 2005
// 
//  File:      XmlnsDefinitionAttribute.cs
// 
//  Contents: Attribute that keep mapping between Xml namespace and 
//            the known types in assembly.
// 
//  Created:   01/19/2005 weibz
//
//-----------------------------------------------------------------------
 
using System;
using System.ComponentModel; 
 
namespace System.Windows.Markup
{ 
    /// 
    ///
    /// XmlnsDefinitionAttribute keeps a mapping between Xml namespace and CLR namespace in an Assembly.
    /// The Xml namespace can be used in a Xaml Markup file. 
    ///
    /// 
    /// To find the appropriate types for element and attribute in xaml file, xaml processors MUST 
    /// search each referenced assembly for XmlnsDefinitionAttribute. If the xmlns for element tag
    /// or attribute matches with the XmlNamespace in this XmlnsDefinitionAttibute, the Xaml processor 
    /// then takes use of the ClrNamespace and AssemblyName stored in this Attibute instance to check
    /// if the element or attribute matches any type inside this namespace in the Assembly.
    ///
    /// For a WinFX assembly, it can set this attibute like below: 
    ///
    /// [assembly:XmlnsDefinition("http://schemas.fabrikam.com/mynamespace", "fabrikam.myproduct.mycategory1")] 
    /// [assembly:XmlnsDefinition("http://schemas.fabrikam.com/mynamespace", "fabrikam.myproduct.mycategory2")] 
    ///
    /// [assembly:XmlnsDefinition("xmlnamsspace", "clrnamespace", AssemblyName="myassembly or full assemblyname")] 
    ///
    /// If fabrikam.myproduct.mycategory namespace in this assembly contains a UIElement such as "MyButton", the
    /// xaml file could use it like below:
    /// 
    ///   Page xmlns:myns="http://schemas.fabrikam.com/mynamespace" ....
    ///      myns:MyButton ...../myns:MyButton 
    ///   /Page 
    ///
    ///  
    [AttributeUsage(AttributeTargets.Assembly, AllowMultiple = true)]
    public sealed class XmlnsDefinitionAttribute: Attribute
    {
        ///  
        /// Constructor
        ///  
        ///  
        /// XmlNamespace used by Markup file
        ///  
        /// 
        /// Clr namespace which contains known types that are used by Markup File.
        /// 
        public XmlnsDefinitionAttribute(string xmlNamespace, string clrNamespace) 
        {
            // Validate Input Arguments 
            if (xmlNamespace == null) 
            {
                throw new ArgumentNullException("xmlNamespace"); 
            }

            if (clrNamespace == null)
            { 
                throw new ArgumentNullException("clrNamespace");
            } 
 
            _xmlNamespace = xmlNamespace;
            _clrNamespace = clrNamespace; 
        }

        #region public properties
 
        /// 
        /// XmlNamespace which can be used in Markup file. 
        /// such as XmlNamespace is set to 
        /// "http://schemas.fabrikam.com/mynamespace".
        /// 
        /// The markup file can have definition like
        /// xmlns:myns="http://schemas.fabrikam.com/mynamespace"
        ///
        ///  
        public string XmlNamespace
        { 
            get { return _xmlNamespace; } 
        }
 
        /// 
        /// ClrNamespace which map to XmlNamespace.
        /// This ClrNamespace should contain some types which are used
        /// by Xaml markup file. 
        /// 
        public string ClrNamespace 
        { 
            get { return _clrNamespace; }
        } 

        /// 
        /// The name of Assembly that contains some types inside CLRNamespace.
        /// If the assemblyName is not set, the code should take the assembly 
        /// for which the instance of this attribute is created.
        ///  
        public string AssemblyName 
        {
            get {  return _assemblyName; } 
            set { _assemblyName = value; }
        }

        #endregion public properties 

 
        #region Private Fields 

        private string _xmlNamespace; 
        private string _clrNamespace;
        private string _assemblyName;

        #endregion Private Fields 

   } 
} 


// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// Copyright (c) Microsoft Corporation. All rights reserved.
//------------------------------------------------------------------------ 
//
//  Microsoft Windows Client Platform
//  Copyright (C) Microsoft Corporation, 2005
// 
//  File:      XmlnsDefinitionAttribute.cs
// 
//  Contents: Attribute that keep mapping between Xml namespace and 
//            the known types in assembly.
// 
//  Created:   01/19/2005 weibz
//
//-----------------------------------------------------------------------
 
using System;
using System.ComponentModel; 
 
namespace System.Windows.Markup
{ 
    /// 
    ///
    /// XmlnsDefinitionAttribute keeps a mapping between Xml namespace and CLR namespace in an Assembly.
    /// The Xml namespace can be used in a Xaml Markup file. 
    ///
    /// 
    /// To find the appropriate types for element and attribute in xaml file, xaml processors MUST 
    /// search each referenced assembly for XmlnsDefinitionAttribute. If the xmlns for element tag
    /// or attribute matches with the XmlNamespace in this XmlnsDefinitionAttibute, the Xaml processor 
    /// then takes use of the ClrNamespace and AssemblyName stored in this Attibute instance to check
    /// if the element or attribute matches any type inside this namespace in the Assembly.
    ///
    /// For a WinFX assembly, it can set this attibute like below: 
    ///
    /// [assembly:XmlnsDefinition("http://schemas.fabrikam.com/mynamespace", "fabrikam.myproduct.mycategory1")] 
    /// [assembly:XmlnsDefinition("http://schemas.fabrikam.com/mynamespace", "fabrikam.myproduct.mycategory2")] 
    ///
    /// [assembly:XmlnsDefinition("xmlnamsspace", "clrnamespace", AssemblyName="myassembly or full assemblyname")] 
    ///
    /// If fabrikam.myproduct.mycategory namespace in this assembly contains a UIElement such as "MyButton", the
    /// xaml file could use it like below:
    /// 
    ///   Page xmlns:myns="http://schemas.fabrikam.com/mynamespace" ....
    ///      myns:MyButton ...../myns:MyButton 
    ///   /Page 
    ///
    ///  
    [AttributeUsage(AttributeTargets.Assembly, AllowMultiple = true)]
    public sealed class XmlnsDefinitionAttribute: Attribute
    {
        ///  
        /// Constructor
        ///  
        ///  
        /// XmlNamespace used by Markup file
        ///  
        /// 
        /// Clr namespace which contains known types that are used by Markup File.
        /// 
        public XmlnsDefinitionAttribute(string xmlNamespace, string clrNamespace) 
        {
            // Validate Input Arguments 
            if (xmlNamespace == null) 
            {
                throw new ArgumentNullException("xmlNamespace"); 
            }

            if (clrNamespace == null)
            { 
                throw new ArgumentNullException("clrNamespace");
            } 
 
            _xmlNamespace = xmlNamespace;
            _clrNamespace = clrNamespace; 
        }

        #region public properties
 
        /// 
        /// XmlNamespace which can be used in Markup file. 
        /// such as XmlNamespace is set to 
        /// "http://schemas.fabrikam.com/mynamespace".
        /// 
        /// The markup file can have definition like
        /// xmlns:myns="http://schemas.fabrikam.com/mynamespace"
        ///
        ///  
        public string XmlNamespace
        { 
            get { return _xmlNamespace; } 
        }
 
        /// 
        /// ClrNamespace which map to XmlNamespace.
        /// This ClrNamespace should contain some types which are used
        /// by Xaml markup file. 
        /// 
        public string ClrNamespace 
        { 
            get { return _clrNamespace; }
        } 

        /// 
        /// The name of Assembly that contains some types inside CLRNamespace.
        /// If the assemblyName is not set, the code should take the assembly 
        /// for which the instance of this attribute is created.
        ///  
        public string AssemblyName 
        {
            get {  return _assemblyName; } 
            set { _assemblyName = value; }
        }

        #endregion public properties 

 
        #region Private Fields 

        private string _xmlNamespace; 
        private string _clrNamespace;
        private string _assemblyName;

        #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