| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 |
- //
- // System.Web.Compilation.PageCompiler
- //
- // Authors:
- // Gonzalo Paniagua Javier ([email protected])
- //
- // (C) 2002,2003 Ximian, Inc (http://www.ximian.com)
- //
- using System;
- using System.CodeDom;
- using System.IO;
- using System.Reflection;
- using System.Text;
- using System.Web.UI;
- using System.Web.SessionState;
- using System.Web.Util;
- namespace System.Web.Compilation
- {
- class PageCompiler : TemplateControlCompiler
- {
- PageParser pageParser;
- static CodeTypeReference intRef = new CodeTypeReference (typeof (int));
- public PageCompiler (PageParser pageParser)
- : base (pageParser)
- {
- this.pageParser = pageParser;
- }
- protected override void AddInterfaces ()
- {
- base.AddInterfaces ();
- if (pageParser.EnableSessionState)
- mainClass.BaseTypes.Add (new CodeTypeReference (typeof(IRequiresSessionState)));
- if (pageParser.ReadOnlySessionState)
- mainClass.BaseTypes.Add (new CodeTypeReference (typeof (IReadOnlySessionState)));
- }
- void CreateGetTypeHashCode ()
- {
- CodeMemberMethod method = new CodeMemberMethod ();
- method.ReturnType = intRef;
- method.Name = "GetTypeHashCode";
- method.Attributes = MemberAttributes.Public | MemberAttributes.Override;
- Random rnd = new Random (pageParser.InputFile.GetHashCode ());
- method.Statements.Add (new CodeMethodReturnStatement (new CodePrimitiveExpression (rnd.Next ())));
- mainClass.Members.Add (method);
- }
- protected override void CreateMethods ()
- {
- base.CreateMethods ();
- CreateGetTypeHashCode ();
- }
- public static Type CompilePageType (PageParser pageParser)
- {
- PageCompiler compiler = new PageCompiler (pageParser);
- return compiler.GetCompiledType ();
- }
- }
- }
|