public static CodeTypeMember CreateStaticMethod(string methodName, string typeT, string typeT1, string parameterName, string parameterType, bool useAutoTyping)
        {
            CodeExpression[] codeExpressionArray;
            CodeMemberMethod staticMethod = new CodeMemberMethod()
            {
                Name       = methodName,
                Attributes = MemberAttributes.Abstract | MemberAttributes.Final | MemberAttributes.Static | MemberAttributes.FamilyAndAssembly | MemberAttributes.FamilyOrAssembly | MemberAttributes.Public,
                ReturnType = new CodeTypeReference(typeT)
            };

            staticMethod.Parameters.Add(CodeDomHelper.CreateParameter(parameterName, parameterType));
            CodeExpression parameterExp = new CodeVariableReferenceExpression(parameterName);

            if (!useAutoTyping)
            {
                CodeTypeReferenceExpression codeTypeReferenceExpression = new CodeTypeReferenceExpression("XTypedServices");
                string str = string.Concat(methodName, "<", CodeDomHelper.GetInnerType(typeT, typeT1), ">");
                codeExpressionArray = new CodeExpression[] { parameterExp };
                CodeMethodInvokeExpression methodCall = CodeDomHelper.CreateMethodCall(codeTypeReferenceExpression, str, codeExpressionArray);
                if (typeT1 != null)
                {
                    methodCall.Parameters.Add(CodeDomHelper.SingletonTypeManager());
                }
                staticMethod.Statements.Add(new CodeMethodReturnStatement(methodCall));
            }
            else
            {
                CodeStatementCollection     statements = staticMethod.Statements;
                CodeTypeReference           returnType = staticMethod.ReturnType;
                CodeTypeReferenceExpression codeTypeReferenceExpression1 = new CodeTypeReferenceExpression("XTypedServices");
                codeExpressionArray = new CodeExpression[2];
                CodeTypeReferenceExpression codeTypeReferenceExpression2 = new CodeTypeReferenceExpression("XElement");
                CodeExpression[]            codeExpressionArray1         = new CodeExpression[] { parameterExp };
                codeExpressionArray[0] = CodeDomHelper.CreateMethodCall(codeTypeReferenceExpression2, methodName, codeExpressionArray1);
                codeExpressionArray[1] = CodeDomHelper.SingletonTypeManager();
                statements.Add(new CodeMethodReturnStatement(new CodeCastExpression(returnType, CodeDomHelper.CreateMethodCall(codeTypeReferenceExpression1, "ToXTypedElement", codeExpressionArray))));
            }
            return(staticMethod);
        }
        public static CodeSnippetTypeMember CreateCast(string typeT, string typeT1, bool useAutoTyping)
        {
            string[] strArrays;
            CodeSnippetTypeMember castMember = new CodeSnippetTypeMember();

            if (!useAutoTyping)
            {
                strArrays       = new string[] { "         public static explicit operator ", typeT, "(XElement xe) { return ", "XTypedServices", ".ToXTypedElement<", CodeDomHelper.GetInnerType(typeT, typeT1), ">(xe,", NameGenerator.GetServicesClassName(), ".Instance as ILinqToXsdTypeManager); }" };
                castMember.Text = string.Concat(strArrays);
            }
            else
            {
                strArrays       = new string[] { "         public static explicit operator ", typeT, "(XElement xe) {  ", "return (", typeT, ")", "XTypedServices", ".ToXTypedElement(xe,", NameGenerator.GetServicesClassName(), ".Instance as ILinqToXsdTypeManager); }" };
                castMember.Text = string.Concat(strArrays);
            }
            return(castMember);
        }