//------------------------------------------------------------------------------ // // Copyright (c) Microsoft Corporation. All rights reserved. // //------------------------------------------------------------------------------ namespace System.Web.Configuration { using System; using System.Xml; using System.Configuration; using System.Collections.Specialized; using System.Collections; using System.Globalization; using System.IO; using System.Text; using System.Web.Compilation; using System.Reflection; using System.Web.Hosting; using System.Web.UI; using System.CodeDom.Compiler; using System.Web.Util; using System.ComponentModel; using System.Security.Permissions; public sealed class AssemblyInfo : ConfigurationElement { private static ConfigurationPropertyCollection _properties; private static readonly ConfigurationProperty _propAssembly = new ConfigurationProperty("assembly", typeof(string), null, null, StdValidatorsAndConverters.NonEmptyStringValidator, ConfigurationPropertyOptions.IsRequired | ConfigurationPropertyOptions.IsKey | ConfigurationPropertyOptions.IsAssemblyStringTransformationRequired); private Assembly[] _assembly; private CompilationSection _compilationSection; internal void SetCompilationReference(CompilationSection compSection) { _compilationSection = compSection; } static AssemblyInfo() { _properties = new ConfigurationPropertyCollection(); _properties.Add(_propAssembly); } internal AssemblyInfo() { } public AssemblyInfo(string assemblyName) { Assembly = assemblyName; } protected override ConfigurationPropertyCollection Properties { get { return _properties; } } [ConfigurationProperty("assembly", IsRequired = true, IsKey = true, DefaultValue = "")] [StringValidator(MinLength = 1)] public string Assembly { get { return (string)base[_propAssembly]; } set { base[_propAssembly] = value; } } internal Assembly[] AssemblyInternal { get { Debug.Trace("AssemblyInternal", "Loading assembly: " + Assembly); if (_assembly == null) { Debug.Assert(_compilationSection != null); _assembly = _compilationSection.LoadAssembly(this); } return _assembly; } set { Debug.Trace("AssemblyInternal", "Set assembly: " + Assembly); _assembly = value; } } } }