PageRenderTime 47ms CodeModel.GetById 24ms RepoModel.GetById 0ms app.codeStats 0ms

/LinqToCodedomProject/LinqToCodedom/Generator/Statements/using.cs

#
C# | 64 lines | 58 code | 6 blank | 0 comment | 0 complexity | d32124234eee633ef1688338fcc98cee MD5 | raw file
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Linq.Expressions;
  6. using System.CodeDom;
  7. using LinqToCodedom.Visitors;
  8. using LinqToCodedom.CodeDomPatterns;
  9. namespace LinqToCodedom.Generator
  10. {
  11. public static partial class Emit
  12. {
  13. public static CodeUsingStatement @using<TResult, T>(Expression<Func<TResult, T>> exp,
  14. params CodeStatement[] stmt)
  15. {
  16. return new CodeUsingStatement(
  17. new CodeExpressionVisitor(new VisitorContext()).Visit(exp), stmt
  18. );
  19. }
  20. public static CodeUsingStatement @using<TResult>(Expression<Func<TResult>> exp,
  21. params CodeStatement[] stmt)
  22. {
  23. return new CodeUsingStatement(
  24. new CodeExpressionVisitor(new VisitorContext()).Visit(exp), stmt
  25. );
  26. }
  27. public static CodeUsingStatement @using<TResult, T>(string varName,
  28. Expression<Func<TResult, T>> exp, params CodeStatement[] stmt)
  29. {
  30. return new CodeUsingStatement(
  31. new CodeAssignExpression(
  32. new CodeParameterDeclarationExpression(typeof(TResult), varName),
  33. new CodeExpressionVisitor(new VisitorContext()).Visit(exp)
  34. ), stmt
  35. );
  36. }
  37. public static CodeUsingStatement @using<TResult>(string varName,
  38. Expression<Func<TResult>> exp, params CodeStatement[] stmt)
  39. {
  40. return new CodeUsingStatement(
  41. new CodeAssignExpression(
  42. new CodeParameterDeclarationExpression(typeof(TResult), varName),
  43. new CodeExpressionVisitor(new VisitorContext()).Visit(exp)
  44. ), stmt
  45. );
  46. }
  47. public static CodeUsingStatement @using<TResult>(CodeTypeReference varType, string varName,
  48. Expression<Func<TResult>> exp, params CodeStatement[] stmt)
  49. {
  50. return new CodeUsingStatement(
  51. new CodeAssignExpression(
  52. new CodeParameterDeclarationExpression(varType, varName),
  53. new CodeExpressionVisitor(new VisitorContext()).Visit(exp)
  54. ), stmt
  55. );
  56. }
  57. }
  58. }