Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / cdf / src / WF / Common / Shared / CompilerHelpers.cs / 1305376 / CompilerHelpers.cs
// Copyright (c) Microsoft Corporation. All rights reserved.
//
// THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND,
// WHETHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED
// WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE.
// THE ENTIRE RISK OF USE OR RESULTS IN CONNECTION WITH THE USE OF THIS CODE
// AND INFORMATION REMAINS WITH THE USER.
/**********************************************************************
* NOTE: A copy of this file exists at: WF\Activities\Common
* The two files must be kept in [....]. Any change made here must also
* be made to WF\Activities\Common\CompilerHelpers.cs
*********************************************************************/
namespace System.Workflow.ComponentModel.Compiler
{
using System;
using System.Collections;
using System.Collections.Specialized;
using System.Collections.Generic;
using System.CodeDom;
using System.CodeDom.Compiler;
using System.Workflow.ComponentModel;
using Microsoft.CSharp;
using Microsoft.VisualBasic;
using System.Reflection;
using Microsoft.Win32;
using System.Security;
using System.ComponentModel;
using System.IO;
using System.Diagnostics.CodeAnalysis;
internal enum SupportedLanguages
{
VB,
CSharp
}
internal static class CompilerHelpers
{
private const string CompilerVersionKeyword = "CompilerVersion";
private static Dictionary> providers = null;
private static object providersLock = new object();
[SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
internal static CodeDomProvider CreateCodeProviderInstance(Type type)
{
return CreateCodeProviderInstance(type, string.Empty);
}
[SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
internal static CodeDomProvider CreateCodeProviderInstance(Type type, string compilerVersion)
{
CodeDomProvider provider = null;
if (string.IsNullOrEmpty(compilerVersion))
{
if (type == typeof(CSharpCodeProvider))
provider = new CSharpCodeProvider();
else if (type == typeof(VBCodeProvider))
provider = new VBCodeProvider();
else
provider = (CodeDomProvider)Activator.CreateInstance(type);
}
else
{
//otherwise pass the compiler version parameter into it
Dictionary options = new Dictionary();
options.Add(CompilerHelpers.CompilerVersionKeyword, compilerVersion);
provider = (CodeDomProvider)Activator.CreateInstance(type, new object[] { options });
}
return provider;
}
[SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
static CodeDomProvider GetCodeProviderInstance(Type type, string compilerVersion)
{
CodeDomProvider provider;
lock (providersLock)
{
if (providers == null)
{
providers = new Dictionary>();
}
Dictionary typedProviders;
if (!providers.TryGetValue(type, out typedProviders))
{
typedProviders = new Dictionary();
providers.Add(type, typedProviders);
}
if (!typedProviders.TryGetValue(compilerVersion, out provider))
{
provider = CreateCodeProviderInstance(type, compilerVersion);
typedProviders.Add(compilerVersion, provider);
}
}
return provider;
}
[SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
internal static CodeDomProvider GetCodeDomProvider(SupportedLanguages language)
{
return CompilerHelpers.GetCodeDomProvider(language, string.Empty);
}
[SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
internal static CodeDomProvider GetCodeDomProvider(SupportedLanguages language, string compilerVersion)
{
if (language == SupportedLanguages.CSharp)
{
return GetCodeProviderInstance(typeof(CSharpCodeProvider), compilerVersion);
}
else
{
return GetCodeProviderInstance(typeof(VBCodeProvider), compilerVersion);
}
}
[SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
internal static SupportedLanguages GetSupportedLanguage(IServiceProvider serviceProvider)
{
SupportedLanguages supportedLanguage = SupportedLanguages.CSharp;
IWorkflowCompilerOptionsService workflowCompilerOptions = serviceProvider.GetService(typeof(IWorkflowCompilerOptionsService)) as IWorkflowCompilerOptionsService;
if (workflowCompilerOptions != null)
supportedLanguage = GetSupportedLanguage(workflowCompilerOptions.Language);
return supportedLanguage;
}
[SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
internal static SupportedLanguages GetSupportedLanguage(string language)
{
SupportedLanguages supportedLanguage = SupportedLanguages.CSharp;
if (!String.IsNullOrEmpty(language) &&
(string.Compare(language, "VB", StringComparison.OrdinalIgnoreCase) == 0 ||
string.Compare(language, "VisualBasic", StringComparison.OrdinalIgnoreCase) == 0))
supportedLanguage = SupportedLanguages.VB;
return supportedLanguage;
}
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- NullReferenceException.cs
- ScriptMethodAttribute.cs
- StylusTip.cs
- SkewTransform.cs
- SvcMapFileSerializer.cs
- Rect3DConverter.cs
- CompilerLocalReference.cs
- CodeValidator.cs
- InteropBitmapSource.cs
- Constants.cs
- DataGridHelper.cs
- SamlAssertionKeyIdentifierClause.cs
- GenericIdentity.cs
- SQLInt16Storage.cs
- WmlFormAdapter.cs
- SecurityPermission.cs
- WinEventQueueItem.cs
- StringInfo.cs
- SqlDataSourceSelectingEventArgs.cs
- XmlArrayAttribute.cs
- FontStyle.cs
- PageFunction.cs
- Sequence.cs
- Decimal.cs
- TableCell.cs
- ThrowHelper.cs
- AuthenticationModulesSection.cs
- StorageComplexPropertyMapping.cs
- ConfigXmlElement.cs
- DataObjectMethodAttribute.cs
- FormClosedEvent.cs
- ISO2022Encoding.cs
- ParameterCollection.cs
- ToolStripSeparator.cs
- AlternateView.cs
- x509store.cs
- ExpressionTable.cs
- ResourceWriter.cs
- CodeGeneratorAttribute.cs
- DataGridCommandEventArgs.cs
- MembershipValidatePasswordEventArgs.cs
- OdbcConnection.cs
- basenumberconverter.cs
- GenericIdentity.cs
- OpacityConverter.cs
- PageWrapper.cs
- EditorPartCollection.cs
- PropertyMappingExceptionEventArgs.cs
- EnumType.cs
- ConfigurationSection.cs
- ACE.cs
- ModifiableIteratorCollection.cs
- BitConverter.cs
- InvalidFilterCriteriaException.cs
- TextSerializer.cs
- FloaterBaseParaClient.cs
- ErrorLog.cs
- ConfigXmlElement.cs
- GeneralTransform3DTo2D.cs
- TextEditorThreadLocalStore.cs
- PropertyDescriptorCollection.cs
- CustomPopupPlacement.cs
- ExpressionBindingCollection.cs
- TypeDescriptionProviderAttribute.cs
- TagPrefixInfo.cs
- ErrorStyle.cs
- FixedSOMTableCell.cs
- SpeechRecognizer.cs
- IisTraceListener.cs
- Assert.cs
- BoundPropertyEntry.cs
- XmlQualifiedName.cs
- ReadWriteSpinLock.cs
- DataAdapter.cs
- CLSCompliantAttribute.cs
- cache.cs
- TextElementCollectionHelper.cs
- MatrixAnimationUsingKeyFrames.cs
- AuthenticationManager.cs
- TextChange.cs
- Win32.cs
- EnumType.cs
- ExceptionUtil.cs
- FixedFlowMap.cs
- TreeBuilderXamlTranslator.cs
- GeneratedView.cs
- HttpSysSettings.cs
- PublisherMembershipCondition.cs
- HtmlImage.cs
- ReversePositionQuery.cs
- EventMappingSettingsCollection.cs
- ProfilePropertyNameValidator.cs
- ToolStripSettings.cs
- SchemaNames.cs
- UniqueSet.cs
- StringValidator.cs
- DbParameterCollectionHelper.cs
- EventLogPermission.cs
- QueryOperator.cs
- SymbolTable.cs