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
- EntityKey.cs
- _LazyAsyncResult.cs
- sqlser.cs
- DurationConverter.cs
- Viewport3DAutomationPeer.cs
- LabelInfo.cs
- QueryReaderSettings.cs
- EventLogPermissionAttribute.cs
- DataTemplateSelector.cs
- CodeSubDirectoriesCollection.cs
- SQLInt64Storage.cs
- PickBranch.cs
- CultureInfoConverter.cs
- PerformanceCounterPermissionEntry.cs
- TreeNodeBindingCollection.cs
- ErrorStyle.cs
- ToolboxBitmapAttribute.cs
- ChildTable.cs
- RegistrySecurity.cs
- AuthorizationRuleCollection.cs
- CapabilitiesUse.cs
- VirtualizingPanel.cs
- DesignerVerbCollection.cs
- EvidenceTypeDescriptor.cs
- FormViewPagerRow.cs
- QueuePropertyVariants.cs
- UrlMappingsSection.cs
- DataAdapter.cs
- InfoCardRSAOAEPKeyExchangeFormatter.cs
- AccessDataSourceView.cs
- TcpConnectionPoolSettingsElement.cs
- ParsedAttributeCollection.cs
- PropertyGridEditorPart.cs
- SecurityTokenParametersEnumerable.cs
- DiscoveryReference.cs
- RestHandlerFactory.cs
- WebPartZoneBase.cs
- Menu.cs
- WebPermission.cs
- KeyNotFoundException.cs
- mda.cs
- AssemblyHash.cs
- CompoundFileIOPermission.cs
- WebPartVerbCollection.cs
- SafeNativeMethodsOther.cs
- X509Utils.cs
- DbProviderManifest.cs
- BitmapEffectDrawing.cs
- DesignTimeParseData.cs
- ResXFileRef.cs
- _OverlappedAsyncResult.cs
- HandleExceptionArgs.cs
- TextReader.cs
- MouseGesture.cs
- XmlAttributeOverrides.cs
- ViewEvent.cs
- WeakEventManager.cs
- SecurityUtils.cs
- UrlAuthFailureHandler.cs
- PerfService.cs
- WindowPatternIdentifiers.cs
- RawTextInputReport.cs
- TraceListeners.cs
- ContextMenu.cs
- FlowLayout.cs
- DesignerAutoFormatStyle.cs
- grammarelement.cs
- VirtualizingPanel.cs
- Transform3DCollection.cs
- HandlerMappingMemo.cs
- login.cs
- TraceSource.cs
- VSDExceptions.cs
- AVElementHelper.cs
- InternalRelationshipCollection.cs
- LinkLabel.cs
- FormsAuthenticationCredentials.cs
- UIElementPropertyUndoUnit.cs
- ThemeableAttribute.cs
- TableNameAttribute.cs
- ErrorWrapper.cs
- AnnotationHelper.cs
- Attributes.cs
- regiisutil.cs
- RepeaterItem.cs
- ListBoxItemAutomationPeer.cs
- SafePEFileHandle.cs
- ChtmlImageAdapter.cs
- AnimationTimeline.cs
- TraceContextRecord.cs
- TimeoutHelper.cs
- Subset.cs
- DynamicArgumentDesigner.xaml.cs
- OdbcTransaction.cs
- WebPartConnectionsConnectVerb.cs
- TextSchema.cs
- XmlChildEnumerator.cs
- HMAC.cs
- RouteParser.cs
- ExpressionNode.cs