TraceUtils.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 / CompMod / System / Diagnostics / TraceUtils.cs / 1305376 / TraceUtils.cs

                            //------------------------------------------------------------------------------ 
// 
//     Copyright (c) Microsoft Corporation.  All rights reserved.
// 
//----------------------------------------------------------------------------- 
using System.Configuration;
using System; 
using System.IO; 
using System.Reflection;
using System.Globalization; 
using System.Collections;
using System.Collections.Specialized;
using System.Runtime.Versioning;
 
namespace System.Diagnostics {
    internal static class TraceUtils { 
 
        [ResourceExposure(ResourceScope.None)]
        [ResourceConsumption(ResourceScope.Machine, ResourceScope.Machine)] 
        internal static object GetRuntimeObject(string className, Type baseType, string initializeData) {
            Object newObject = null;
            Type objectType = null;
 
            if (className.Length == 0) {
                throw new ConfigurationErrorsException(SR.GetString(SR.EmptyTypeName_NotAllowed)); 
            } 

            objectType = Type.GetType(className); 

            if (objectType == null) {
                throw new ConfigurationErrorsException(SR.GetString(SR.Could_not_find_type, className));
            } 

            if (!baseType.IsAssignableFrom(objectType)) 
                throw new ConfigurationErrorsException(SR.GetString(SR.Incorrect_base_type, className, baseType.FullName)); 

            Exception innerException = null; 
            try {
                if (String.IsNullOrEmpty(initializeData)) {
                    if (IsOwnedTL(objectType))
                        throw new ConfigurationErrorsException(SR.GetString(SR.TL_InitializeData_NotSpecified)); 

                    // create an object with parameterless constructor 
                    ConstructorInfo ctorInfo = objectType.GetConstructor(new Type[] {}); 
                    if (ctorInfo == null)
                        throw new ConfigurationErrorsException(SR.GetString(SR.Could_not_get_constructor, className)); 
                    newObject = SecurityUtils.ConstructorInfoInvoke(ctorInfo, new object[] { });
                }
                else {
                    // create an object with a one-string constructor 
                    // first look for a string constructor
                    ConstructorInfo ctorInfo = objectType.GetConstructor(new Type[] { typeof(string) }); 
                    if (ctorInfo != null) { 
                        // Special case to enable specifying relative path to trace file from config for
                        // our own TextWriterTraceListener derivatives. We will prepend it with fullpath 
                        // prefix from config file location
                        if (IsOwnedTextWriterTL(objectType)) {
                            if ((initializeData[0] != Path.DirectorySeparatorChar) && (initializeData[0] != Path.AltDirectorySeparatorChar) && !Path.IsPathRooted(initializeData)) {
                                string filePath = DiagnosticsConfiguration.ConfigFilePath; 

                                if (!String.IsNullOrEmpty(filePath)) { 
                                    string dirPath = Path.GetDirectoryName(filePath); 

                                    if (dirPath != null) 
                                        initializeData = Path.Combine(dirPath, initializeData);
                                }
                            }
                        } 
                        newObject = SecurityUtils.ConstructorInfoInvoke(ctorInfo, new object[] { initializeData });
                    } 
                    else { 
                        // now look for another 1 param constructor.
                        ConstructorInfo[] ctorInfos = objectType.GetConstructors(); 
                        if (ctorInfos == null)
                            throw new ConfigurationErrorsException(SR.GetString(SR.Could_not_get_constructor, className));
                        for (int i=0; i

                        

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