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
- ArrayElementGridEntry.cs
- ListViewEditEventArgs.cs
- PropertyBuilder.cs
- AppSecurityManager.cs
- XomlSerializationHelpers.cs
- CompilerErrorCollection.cs
- WhiteSpaceTrimStringConverter.cs
- UserControl.cs
- ReflectionTypeLoadException.cs
- InvalidComObjectException.cs
- CodeMethodReturnStatement.cs
- WindowsUserNameCachingSecurityTokenAuthenticator.cs
- ProxyGenerator.cs
- TaskScheduler.cs
- XmlDataSourceDesigner.cs
- figurelengthconverter.cs
- GeneralTransform2DTo3D.cs
- ClientRoleProvider.cs
- SolidBrush.cs
- XPathPatternParser.cs
- ProfileSettingsCollection.cs
- ListParaClient.cs
- RadialGradientBrush.cs
- ShutDownListener.cs
- OutputCacheSettingsSection.cs
- CodeRemoveEventStatement.cs
- EventMappingSettingsCollection.cs
- InfoCardListRequest.cs
- SqlBulkCopyColumnMappingCollection.cs
- RepeatBehaviorConverter.cs
- SqlGenericUtil.cs
- HttpServerVarsCollection.cs
- GridViewColumnCollectionChangedEventArgs.cs
- ExtensionWindowHeader.cs
- FormattedTextSymbols.cs
- OutputCacheSection.cs
- SystemResourceKey.cs
- ElementUtil.cs
- CustomAttributeBuilder.cs
- ConfigXmlWhitespace.cs
- HtmlHead.cs
- DiagnosticsElement.cs
- PerformanceCounter.cs
- TextElementCollection.cs
- HttpListenerElement.cs
- CollectionBuilder.cs
- VarRefManager.cs
- ClientTarget.cs
- DocumentSequence.cs
- DesignerCategoryAttribute.cs
- SimplePropertyEntry.cs
- ButtonChrome.cs
- HttpWebRequestElement.cs
- RangeContentEnumerator.cs
- DataGridCommandEventArgs.cs
- WinEventQueueItem.cs
- DataObjectSettingDataEventArgs.cs
- SmtpReplyReader.cs
- InkCanvasSelection.cs
- GroupQuery.cs
- ConstantExpression.cs
- CodePropertyReferenceExpression.cs
- SqlDependency.cs
- PrimarySelectionAdorner.cs
- AbsoluteQuery.cs
- FixUp.cs
- BitmapEffectOutputConnector.cs
- CompositeFontFamily.cs
- DesignerDataSchemaClass.cs
- TypeValidationEventArgs.cs
- TreeNodeBinding.cs
- QilReference.cs
- AccessDataSourceView.cs
- NullPackagingPolicy.cs
- Converter.cs
- MutexSecurity.cs
- DrawTreeNodeEventArgs.cs
- ServiceOperation.cs
- SafeNativeMethodsMilCoreApi.cs
- PathFigureCollection.cs
- DataGridItem.cs
- WindowAutomationPeer.cs
- ObjectTypeMapping.cs
- ValidateNames.cs
- X509CertificateTrustedIssuerElement.cs
- TlsSspiNegotiation.cs
- UpdatePanelControlTrigger.cs
- Validator.cs
- Int64AnimationBase.cs
- BaseDataListPage.cs
- RuntimeConfig.cs
- OdbcTransaction.cs
- FrameworkTemplate.cs
- DataTableCollection.cs
- BaseParser.cs
- ConfigurationStrings.cs
- ContentType.cs
- EventLogSession.cs
- SymmetricAlgorithm.cs
- RepeatBehavior.cs