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

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- TemplateControlParser.cs
- EntityDataSourceStatementEditorForm.cs
- GrammarBuilder.cs
- SuppressMergeCheckAttribute.cs
- ScriptReference.cs
- securitycriticaldataClass.cs
- objectquery_tresulttype.cs
- SystemInformation.cs
- StylusPointPropertyInfo.cs
- ChildChangedEventArgs.cs
- VariableExpressionConverter.cs
- FileSystemWatcher.cs
- ModelItemImpl.cs
- PageEventArgs.cs
- StyleXamlTreeBuilder.cs
- KeyboardDevice.cs
- HeaderElement.cs
- RepeaterItem.cs
- ObjectDataSourceEventArgs.cs
- Assembly.cs
- APCustomTypeDescriptor.cs
- XmlSchemaChoice.cs
- IntegrationExceptionEventArgs.cs
- RichTextBox.cs
- PageSettings.cs
- Journaling.cs
- StylusButtonCollection.cs
- XXXOnTypeBuilderInstantiation.cs
- CodePageUtils.cs
- HostedElements.cs
- InvalidateEvent.cs
- SqlStream.cs
- OutputCacheSettingsSection.cs
- UpdatePanel.cs
- CompressionTransform.cs
- Boolean.cs
- HScrollBar.cs
- RequestCache.cs
- PointAnimationUsingPath.cs
- DataGridItemEventArgs.cs
- KoreanCalendar.cs
- NativeMethodsCLR.cs
- InternalTransaction.cs
- FixUpCollection.cs
- CharacterMetricsDictionary.cs
- PropertyRecord.cs
- Menu.cs
- DescendentsWalkerBase.cs
- DeferredSelectedIndexReference.cs
- DataKeyArray.cs
- BufferBuilder.cs
- EntityDataSourceSelectedEventArgs.cs
- SimpleRecyclingCache.cs
- StaticExtensionConverter.cs
- UnmanagedHandle.cs
- SchemaElementDecl.cs
- HttpConfigurationSystem.cs
- ContentPosition.cs
- RestClientProxyHandler.cs
- XmlSchemaValidationException.cs
- UrlMapping.cs
- FixedDSBuilder.cs
- MetadataCacheItem.cs
- EventLogEntry.cs
- RequestNavigateEventArgs.cs
- ArraySubsetEnumerator.cs
- SystemWebExtensionsSectionGroup.cs
- TraceListeners.cs
- XmlBaseReader.cs
- ParserStreamGeometryContext.cs
- Object.cs
- Completion.cs
- CopyAttributesAction.cs
- SafeCoTaskMem.cs
- EditorPartCollection.cs
- SQLDecimal.cs
- newinstructionaction.cs
- HighlightVisual.cs
- XmlSerializerAssemblyAttribute.cs
- EntityCommandCompilationException.cs
- SymmetricAlgorithm.cs
- SignedInfo.cs
- HttpPostedFileBase.cs
- DataRowIndexBuffer.cs
- RuntimeWrappedException.cs
- ServiceModelPerformanceCounters.cs
- WebServiceEnumData.cs
- CircleHotSpot.cs
- SizeIndependentAnimationStorage.cs
- DockPattern.cs
- ChangeConflicts.cs
- CodeArgumentReferenceExpression.cs
- OleStrCAMarshaler.cs
- CatalogZone.cs
- RayHitTestParameters.cs
- StateWorkerRequest.cs
- SmiEventSink_DeferedProcessing.cs
- AttributeProviderAttribute.cs
- SchemaComplexType.cs
- odbcmetadatafactory.cs