internal static ValidationError ValidateNameProperty(string propName, IServiceProvider context, string identifier) { if (context == null) { throw new ArgumentNullException("context"); } ValidationError error = null; if ((identifier == null) || (identifier.Length == 0)) { error = new ValidationError(SR.GetString("Error_PropertyNotSet", new object[] { propName }), 0x116); } else { System.Workflow.Activities.Common.SupportedLanguages supportedLanguage = System.Workflow.Activities.Common.CompilerHelpers.GetSupportedLanguage(context); CodeDomProvider codeDomProvider = System.Workflow.Activities.Common.CompilerHelpers.GetCodeDomProvider(supportedLanguage); if ((((supportedLanguage == System.Workflow.Activities.Common.SupportedLanguages.CSharp) && identifier.StartsWith("@", StringComparison.Ordinal)) || (((supportedLanguage == System.Workflow.Activities.Common.SupportedLanguages.VB) && identifier.StartsWith("[", StringComparison.Ordinal)) && identifier.EndsWith("]", StringComparison.Ordinal))) || !codeDomProvider.IsValidIdentifier(codeDomProvider.CreateEscapedIdentifier(identifier))) { error = new ValidationError(SR.GetString("Error_InvalidIdentifier", new object[] { propName, SR.GetString("Error_InvalidLanguageIdentifier", new object[] { identifier }) }), 0x119); } } if (error != null) { error.PropertyName = propName; } return(error); }
internal static CodeDomProvider GetCodeDomProvider(System.Workflow.Activities.Common.SupportedLanguages language, string compilerVersion) { if (language == System.Workflow.Activities.Common.SupportedLanguages.CSharp) { return(GetCodeProviderInstance(typeof(CSharpCodeProvider), compilerVersion)); } return(GetCodeProviderInstance(typeof(VBCodeProvider), compilerVersion)); }
internal static System.Workflow.Activities.Common.SupportedLanguages GetSupportedLanguage(string language) { System.Workflow.Activities.Common.SupportedLanguages cSharp = System.Workflow.Activities.Common.SupportedLanguages.CSharp; if (string.IsNullOrEmpty(language) || ((string.Compare(language, "VB", StringComparison.OrdinalIgnoreCase) != 0) && (string.Compare(language, "VisualBasic", StringComparison.OrdinalIgnoreCase) != 0))) { return(cSharp); } return(System.Workflow.Activities.Common.SupportedLanguages.VB); }
internal static System.Workflow.Activities.Common.SupportedLanguages GetSupportedLanguage(IServiceProvider serviceProvider) { System.Workflow.Activities.Common.SupportedLanguages cSharp = System.Workflow.Activities.Common.SupportedLanguages.CSharp; IWorkflowCompilerOptionsService service = serviceProvider.GetService(typeof(IWorkflowCompilerOptionsService)) as IWorkflowCompilerOptionsService; if (service != null) { cSharp = GetSupportedLanguage(service.Language); } return(cSharp); }
internal static void ValidateIdentifier(IServiceProvider serviceProvider, string identifier) { if (serviceProvider == null) { throw new ArgumentNullException("serviceProvider"); } System.Workflow.Activities.Common.SupportedLanguages supportedLanguage = System.Workflow.Activities.Common.CompilerHelpers.GetSupportedLanguage(serviceProvider); CodeDomProvider codeDomProvider = System.Workflow.Activities.Common.CompilerHelpers.GetCodeDomProvider(supportedLanguage); if ((((supportedLanguage == System.Workflow.Activities.Common.SupportedLanguages.CSharp) && identifier.StartsWith("@", StringComparison.Ordinal)) || (((supportedLanguage == System.Workflow.Activities.Common.SupportedLanguages.VB) && identifier.StartsWith("[", StringComparison.Ordinal)) && identifier.EndsWith("]", StringComparison.Ordinal))) || !codeDomProvider.IsValidIdentifier(identifier)) { throw new Exception(SR.GetString("Error_InvalidLanguageIdentifier", new object[] { identifier })); } }
internal static Type ParseTypeName(ITypeProvider typeProvider, System.Workflow.Activities.Common.SupportedLanguages language, string typeName) { Type type = null; type = typeProvider.GetType(typeName, false); if (type == null) { string str = string.Empty; string elemantDecorator = string.Empty; string[] parameters = null; if (ParseTypeName(typeName, (language == System.Workflow.Activities.Common.SupportedLanguages.CSharp) ? ParseTypeNameLanguage.CSharp : ParseTypeNameLanguage.VB, out str, out parameters, out elemantDecorator)) { type = typeProvider.GetType(str + elemantDecorator, false); } } return(type); }
internal static string FormatType(Type type, System.Workflow.Activities.Common.SupportedLanguages language) { string fullName = string.Empty; if (type.IsArray) { fullName = FormatType(type.GetElementType(), language); if (language == System.Workflow.Activities.Common.SupportedLanguages.CSharp) { fullName = fullName + '['; } else { fullName = fullName + '('; } fullName = fullName + new string(',', type.GetArrayRank() - 1); if (language == System.Workflow.Activities.Common.SupportedLanguages.CSharp) { return(fullName + ']'); } return(fullName + ')'); } fullName = type.FullName; int index = fullName.IndexOf('`'); if (index != -1) { fullName = fullName.Substring(0, index); } fullName = fullName.Replace('+', '.'); if (!type.ContainsGenericParameters && !type.IsGenericType) { return(fullName); } Type[] genericArguments = type.GetGenericArguments(); if (language == System.Workflow.Activities.Common.SupportedLanguages.CSharp) { fullName = fullName + '<'; } else { fullName = fullName + '('; } bool flag = true; foreach (Type type2 in genericArguments) { if (!flag) { fullName = fullName + ", "; } else { if (language == System.Workflow.Activities.Common.SupportedLanguages.VB) { fullName = fullName + "Of "; } flag = false; } fullName = fullName + FormatType(type2, language); } if (language == System.Workflow.Activities.Common.SupportedLanguages.CSharp) { return(fullName + '>'); } return(fullName + ')'); }
internal static string FormatType(string type, System.Workflow.Activities.Common.SupportedLanguages language) { string str = string.Empty; string[] parameters = null; string typeName = string.Empty; string elemantDecorator = string.Empty; if (ParseTypeName(type, ParseTypeNameLanguage.NetFramework, out typeName, out parameters, out elemantDecorator)) { if (elemantDecorator.Length > 0) { if (language == System.Workflow.Activities.Common.SupportedLanguages.VB) { elemantDecorator = elemantDecorator.Replace('[', '(').Replace(']', ')'); } return(FormatType(typeName, language) + elemantDecorator); } if ((parameters != null) && (parameters.Length > 0)) { str = FormatType(typeName, language); if (language == System.Workflow.Activities.Common.SupportedLanguages.CSharp) { str = str + '<'; } else { str = str + '('; } bool flag = true; foreach (string str4 in parameters) { if (!flag) { str = str + ", "; } else { if (language == System.Workflow.Activities.Common.SupportedLanguages.VB) { str = str + "Of "; } flag = false; } str = str + FormatType(str4, language); } if (language == System.Workflow.Activities.Common.SupportedLanguages.CSharp) { return(str + '>'); } return(str + ')'); } str = typeName.Replace('+', '.'); int index = str.IndexOf('`'); if (index != -1) { str = str.Substring(0, index); } index = str.IndexOf(','); if (index != -1) { str = str.Substring(0, index); } } return(str); }
internal static CodeDomProvider GetCodeDomProvider(System.Workflow.Activities.Common.SupportedLanguages language) { return(GetCodeDomProvider(language, string.Empty)); }