Code:
/ 4.0 / 4.0 / 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// 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
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- DirectoryInfo.cs
- RegexWorker.cs
- Win32Interop.cs
- IntegrationExceptionEventArgs.cs
- DataGridHelper.cs
- BrowserCapabilitiesCompiler.cs
- AssemblyName.cs
- XPathNodeIterator.cs
- CachedBitmap.cs
- ImageUrlEditor.cs
- securitycriticaldataformultiplegetandset.cs
- FieldNameLookup.cs
- WebPartCatalogAddVerb.cs
- XpsS0ValidatingLoader.cs
- SqlConnectionPoolGroupProviderInfo.cs
- EditBehavior.cs
- GridViewSelectEventArgs.cs
- Size.cs
- Section.cs
- XamlDesignerSerializationManager.cs
- WindowsIPAddress.cs
- KnownTypeHelper.cs
- SecurityMessageProperty.cs
- KnownColorTable.cs
- SafeNativeMethods.cs
- ColumnWidthChangingEvent.cs
- ByteAnimationUsingKeyFrames.cs
- IPEndPointCollection.cs
- _ReceiveMessageOverlappedAsyncResult.cs
- WorkflowRuntimeBehavior.cs
- SynchronizedInputPattern.cs
- NonSerializedAttribute.cs
- Classification.cs
- ToolStripDropDown.cs
- SerTrace.cs
- AsyncPostBackErrorEventArgs.cs
- Application.cs
- TemplateXamlParser.cs
- ListViewInsertedEventArgs.cs
- _DisconnectOverlappedAsyncResult.cs
- ByteStorage.cs
- TextProperties.cs
- PathFigure.cs
- XPathParser.cs
- UrlMapping.cs
- ToolStripItemRenderEventArgs.cs
- HttpBrowserCapabilitiesWrapper.cs
- DesignerAttribute.cs
- CqlBlock.cs
- Point.cs
- TemplatedEditableDesignerRegion.cs
- DatatypeImplementation.cs
- SessionStateUtil.cs
- M3DUtil.cs
- SpotLight.cs
- XPathConvert.cs
- SettingsPropertyValueCollection.cs
- BindingSource.cs
- util.cs
- SignatureToken.cs
- InlinedAggregationOperator.cs
- DirectoryRootQuery.cs
- KeyFrames.cs
- PrintDialog.cs
- MatrixTransform.cs
- SizeLimitedCache.cs
- AQNBuilder.cs
- figurelengthconverter.cs
- ContextInformation.cs
- EastAsianLunisolarCalendar.cs
- TextAutomationPeer.cs
- PackWebRequestFactory.cs
- SqlPersonalizationProvider.cs
- XmlToDatasetMap.cs
- ViewPort3D.cs
- HasCopySemanticsAttribute.cs
- ContainerUIElement3D.cs
- NullToBooleanConverter.cs
- MultilineStringConverter.cs
- BrowserCapabilitiesCodeGenerator.cs
- XmlUTF8TextReader.cs
- TimeSpanValidatorAttribute.cs
- InkPresenterAutomationPeer.cs
- ObjectToken.cs
- ToolStripActionList.cs
- BufferedGraphicsManager.cs
- XmlSchemaParticle.cs
- DataObject.cs
- Processor.cs
- _BasicClient.cs
- AspNetCacheProfileAttribute.cs
- ContentType.cs
- CommandLineParser.cs
- EventProviderWriter.cs
- Metadata.cs
- GeometryDrawing.cs
- UrlMapping.cs
- EventBuilder.cs
- Int32AnimationBase.cs
- SoapSchemaImporter.cs