File: Microsoft\Build\Tasks\Xaml\ClassData.cs
Project: ndp\cdf\src\NetFx40\XamlBuildTask\XamlBuildTask.csproj (XamlBuildTask)
//------------------------------------------------------------
// Copyright (c) Microsoft Corporation.  All rights reserved.
//------------------------------------------------------------
 
namespace Microsoft.Build.Tasks.Xaml
{
    using System;
    using System.Collections.Generic;
    using System.Xml.Linq;
    using System.Xaml.Schema;
    using System.Xaml;
    using System.Windows.Markup;
    using System.Runtime;
    using System.Reflection;
    using System.Collections.ObjectModel;
    using System.Collections;
    
    public class ClassData
    {
        [Fx.Tag.Queue(typeof(NamedObject), Scope = Fx.Tag.Strings.DeclaringInstance)]
        private List<NamedObject> namedObjects;
        [Fx.Tag.Queue(typeof(string), Scope = Fx.Tag.Strings.DeclaringInstance)]
        private List<string> codeSnippets;
        List<AttributeData> attributes;
        PropertyDataCollection properties;
 
        public ClassData()
        {
            this.IsPublic = true;
        }
 
        public XamlType BaseType
        {
            get;
            set;
        }
 
        public IList<String> CodeSnippets
        {
            get
            {
                if (codeSnippets == null)
                {
                    codeSnippets = new List<String>();
                }
                return codeSnippets;
            }
        }
 
        public string EmbeddedResourceFileName
        { 
            get; 
            internal set; 
        }
 
        public KeyedCollection<string, PropertyData> Properties
        {
            get
            {
                if (this.properties == null)
                {
                    this.properties = new PropertyDataCollection();
                }
                return this.properties;
            }
        }
 
        public IList<AttributeData> Attributes
        {
            get
            {                
                if (attributes == null)
                {
                    attributes = new List<AttributeData>();
                }
                return attributes;
            }
        }
 
        public string Name
        { 
            get;
            internal set; 
        }
        
        public IList<NamedObject> NamedObjects
        {
            get
            {
                if (namedObjects == null)
                {
                    namedObjects = new List<NamedObject>();
                }
                return namedObjects;
            }
        }
 
        public String Namespace
        { 
            get;
            internal set;
        }             
 
        public XamlNodeList EmbeddedResourceXaml
        {
            get;
            set;
        }
 
        public bool IsPublic
        {
            get;
            set;
        }       
        
        public string FileName
        {
            get; 
            internal set;
        }
 
        public string HelperClassFullName
        {
            get;
            internal set;
        }
 
        internal String RootNamespace
        {
            get;
            set;
        }  
 
        internal bool SourceFileExists
        {
            get;
            set;
        }
 
        internal bool RequiresCompilationPass2
        {
            get;
            set;
        }
        
        class PropertyDataCollection : KeyedCollection<string, PropertyData>
        {
            protected override string GetKeyForItem(PropertyData item)
            {
                return item.Name;
            }
        }
    }
}