コード例 #1
0
        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);
        }
コード例 #2
0
 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));
 }
コード例 #3
0
 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);
 }
コード例 #4
0
        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);
        }
コード例 #5
0
        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 }));
            }
        }
コード例 #6
0
        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);
        }
コード例 #7
0
        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 + ')');
        }
コード例 #8
0
        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);
        }
コード例 #9
0
 internal static CodeDomProvider GetCodeDomProvider(System.Workflow.Activities.Common.SupportedLanguages language)
 {
     return(GetCodeDomProvider(language, string.Empty));
 }