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); }