2
0

UserControlCompiler.cs 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. //
  2. // System.Web.Compilation.UserControlCompiler
  3. //
  4. // Authors:
  5. // Gonzalo Paniagua Javier ([email protected])
  6. //
  7. // (C) 2002,2003 Ximian, Inc (http://www.ximian.com)
  8. //
  9. using System;
  10. using System.CodeDom;
  11. using System.Web.UI;
  12. namespace System.Web.Compilation
  13. {
  14. class UserControlCompiler : TemplateControlCompiler
  15. {
  16. UserControlParser parser;
  17. public UserControlCompiler (UserControlParser parser)
  18. : base (parser)
  19. {
  20. this.parser = parser;
  21. }
  22. public static Type CompileUserControlType (UserControlParser userControlParser)
  23. {
  24. UserControlCompiler pc = new UserControlCompiler (userControlParser);
  25. return pc.GetCompiledType ();
  26. }
  27. protected override void AddClassAttributes ()
  28. {
  29. if (parser.OutputCache)
  30. AddOutputCacheAttribute ();
  31. }
  32. private void AddOutputCacheAttribute ()
  33. {
  34. CodeAttributeDeclaration cad = new CodeAttributeDeclaration ("System.Web.UI.PartialCachingAttribute");
  35. AddPrimitiveAttribute (cad, parser.OutputCacheDuration);
  36. AddPrimitiveAttribute (cad, parser.OutputCacheVaryByParam);
  37. AddPrimitiveAttribute (cad, parser.OutputCacheVaryByControls);
  38. AddPrimitiveAttribute (cad, parser.OutputCacheVaryByCustom);
  39. AddPrimitiveAttribute (cad, parser.OutputCacheShared);
  40. mainClass.CustomAttributes.Add (cad);
  41. }
  42. private void AddPrimitiveAttribute (CodeAttributeDeclaration cad, object obj)
  43. {
  44. cad.Arguments.Add (new CodeAttributeArgument (new CodePrimitiveExpression (obj)));
  45. }
  46. }
  47. }