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
- RegexMatch.cs
- StrongNamePublicKeyBlob.cs
- TableCell.cs
- SiteMapDesignerDataSourceView.cs
- EmissiveMaterial.cs
- UnsafeNativeMethods.cs
- KeyToListMap.cs
- Typeface.cs
- XmlAttribute.cs
- DecimalAnimationUsingKeyFrames.cs
- ProcessHostServerConfig.cs
- CodeAttributeDeclarationCollection.cs
- AtomServiceDocumentSerializer.cs
- RightNameExpirationInfoPair.cs
- MediaScriptCommandRoutedEventArgs.cs
- SafeNativeMethods.cs
- ObjectDataSourceEventArgs.cs
- BaseCollection.cs
- SafeLocalMemHandle.cs
- TextAdaptor.cs
- _NestedSingleAsyncResult.cs
- SchemaSetCompiler.cs
- TemplateControlBuildProvider.cs
- EmbeddedMailObject.cs
- DataGridViewCellStyle.cs
- TimeStampChecker.cs
- BindingExpressionUncommonField.cs
- _ServiceNameStore.cs
- MonitorWrapper.cs
- EventHandlersStore.cs
- TcpHostedTransportConfiguration.cs
- XmlSchemaSimpleContentRestriction.cs
- TextTreeText.cs
- MetadataSet.cs
- ComponentChangedEvent.cs
- TextView.cs
- StateMachineAction.cs
- Pen.cs
- PropertiesTab.cs
- SrgsSubset.cs
- TreeView.cs
- FactoryId.cs
- LineUtil.cs
- XmlValidatingReader.cs
- HtmlControl.cs
- WebPartDisplayMode.cs
- ProcessThread.cs
- EpmContentSerializer.cs
- SHA256CryptoServiceProvider.cs
- PageParser.cs
- ForEachDesigner.xaml.cs
- Connector.cs
- ResourcePermissionBase.cs
- PlainXmlWriter.cs
- MetadataHelper.cs
- ListItemCollection.cs
- OdbcConnectionFactory.cs
- WebPageTraceListener.cs
- ItemsPresenter.cs
- TableLayoutStyleCollection.cs
- CodeDelegateInvokeExpression.cs
- CodeAccessPermission.cs
- ExtractCollection.cs
- SchemaNames.cs
- MenuStrip.cs
- BamlTreeMap.cs
- TagElement.cs
- PropertyEntry.cs
- DiscoveryClient.cs
- XmlEncodedRawTextWriter.cs
- Size3DConverter.cs
- UIElement.cs
- Ray3DHitTestResult.cs
- BindableAttribute.cs
- ListViewGroupConverter.cs
- ASCIIEncoding.cs
- LinkConverter.cs
- GlobalId.cs
- XamlStackWriter.cs
- MarshalByRefObject.cs
- SecurityContext.cs
- SimpleBitVector32.cs
- TcpWorkerProcess.cs
- FilteredAttributeCollection.cs
- XmlTextReader.cs
- MenuItemBinding.cs
- wpf-etw.cs
- AssemblyUtil.cs
- ResourceWriter.cs
- TypeElement.cs
- DesignerTransactionCloseEvent.cs
- GraphicsContext.cs
- SqlOuterApplyReducer.cs
- WebPartConnection.cs
- EncoderParameter.cs
- SByte.cs
- GlobalEventManager.cs
- ISAPIWorkerRequest.cs
- WinFormsSecurity.cs
- TraceSection.cs