Code:
/ DotNET / DotNET / 8.0 / untmp / whidbey / REDBITS / ndp / fx / src / xsp / System / Web / Compilation / SimpleHandlerBuildProvider.cs / 2 / SimpleHandlerBuildProvider.cs
//------------------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//-----------------------------------------------------------------------------
namespace System.Web.Compilation {
using System;
using System.IO;
using System.Collections;
using System.Reflection;
using System.CodeDom;
using System.CodeDom.Compiler;
using System.Web.Configuration;
using System.Web.Util;
using System.Web.UI;
#if ORCAS
using System.Web.UI.Imaging;
#endif
[BuildProviderAppliesTo(BuildProviderAppliesTo.Web)]
internal abstract class SimpleHandlerBuildProvider: InternalBuildProvider {
private SimpleWebHandlerParser _parser;
internal override IAssemblyDependencyParser AssemblyDependencyParser {
get { return _parser; }
}
protected abstract SimpleWebHandlerParser CreateParser();
public override CompilerType CodeCompilerType {
get {
Debug.Assert(_parser == null);
_parser = CreateParser();
_parser.SetBuildProvider(this);
_parser.IgnoreParseErrors = IgnoreParseErrors;
_parser.Parse(ReferencedAssemblies);
return _parser.CompilerType;
}
}
protected internal override CodeCompileUnit GetCodeCompileUnit(out IDictionary linePragmasTable) {
Debug.Assert(_parser != null);
CodeCompileUnit ccu = _parser.GetCodeModel();
linePragmasTable = _parser.GetLinePragmasTable();
return ccu;
}
public override void GenerateCode(AssemblyBuilder assemblyBuilder) {
CodeCompileUnit codeCompileUnit = _parser.GetCodeModel();
// Bail if we have nothing we need to compile
if (codeCompileUnit == null)
return;
assemblyBuilder.AddCodeCompileUnit(this, codeCompileUnit);
// Add all the assemblies
if (_parser.AssemblyDependencies != null) {
foreach (Assembly assembly in _parser.AssemblyDependencies) {
assemblyBuilder.AddAssemblyReference(assembly, codeCompileUnit);
}
}
// NOTE: we can't actually generate the fast factory because it would give
// a really bad error if the user specifies a classname which doesn't match
// the actual class they define. A bit unfortunate, but not that big a deal...
// tell the host to generate a fast factory for this type (if any)
//string generatedTypeName = _parser.GeneratedTypeName;
//if (generatedTypeName != null)
// assemblyBuilder.GenerateTypeFactory(generatedTypeName);
}
public override Type GetGeneratedType(CompilerResults results) {
Type t;
if (_parser.HasInlineCode) {
// This is the case where the asmx/ashx has code in the file, and it
// has been compiled.
Debug.Assert(results != null);
t = _parser.GetTypeToCache(results.CompiledAssembly);
}
else {
// This is the case where the asmx/ashx has no code and is simply
// pointing to an existing assembly. Set the UsesExistingAssembly
// flag accordingly.
t = _parser.GetTypeToCache(null);
}
return t;
}
public override ICollection VirtualPathDependencies {
get {
return _parser.SourceDependencies;
}
}
internal CompilerType GetDefaultCompilerTypeForLanguageInternal(string language) {
return GetDefaultCompilerTypeForLanguage(language);
}
internal CompilerType GetDefaultCompilerTypeInternal() {
return GetDefaultCompilerType();
}
internal TextReader OpenReaderInternal() {
return OpenReader();
}
internal override ICollection GetGeneratedTypeNames() {
// Note that _parser.TypeName does not necessarily point to the type defined in the handler file,
// it could be any type that can be referenced at runtime, App_Code for example.
return new SingleObjectCollection(_parser.TypeName);
}
}
#if ORCAS
internal class ImageGeneratorBuildProvider: SimpleHandlerBuildProvider {
private ImageGeneratorParser _parser;
protected override SimpleWebHandlerParser CreateParser() {
_parser = new ImageGeneratorParser(VirtualPath);
return _parser;
}
internal override BuildResultCompiledType CreateBuildResult(Type t) {
return new ImageGeneratorBuildResultCompiledType(t);
}
internal override BuildResult CreateBuildResult(CompilerResults results) {
ImageGeneratorBuildResultCompiledType result = (ImageGeneratorBuildResultCompiledType)base.CreateBuildResult(results);
result.OutputCacheInfo = _parser.OutputCacheDirective;
result.CustomErrorImageUrl = _parser.CustomErrorImageUrl;
return result;
}
}
#endif
internal class WebServiceBuildProvider: SimpleHandlerBuildProvider {
protected override SimpleWebHandlerParser CreateParser() {
return new WebServiceParser(VirtualPath);
}
}
internal class WebHandlerBuildProvider: SimpleHandlerBuildProvider {
protected override SimpleWebHandlerParser CreateParser() {
return new WebHandlerParser(VirtualPath);
}
}
}
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- PropertyBuilder.cs
- ExpressionBuilderCollection.cs
- SQLBinaryStorage.cs
- CompilationPass2TaskInternal.cs
- FormsAuthenticationCredentials.cs
- PropertyChangedEventManager.cs
- SchemaSetCompiler.cs
- SecureStringHasher.cs
- DrawItemEvent.cs
- XPathPatternParser.cs
- XmlSchemaInfo.cs
- SystemThemeKey.cs
- OracleTimeSpan.cs
- FixedFlowMap.cs
- GeneralTransformGroup.cs
- CodeIdentifiers.cs
- SelectionProcessor.cs
- DataSetFieldSchema.cs
- TypeReference.cs
- NotifyIcon.cs
- ImageDesigner.cs
- GridToolTip.cs
- CounterNameConverter.cs
- ValidationSummary.cs
- WeakEventManager.cs
- BridgeDataRecord.cs
- Pts.cs
- SubclassTypeValidator.cs
- BrowsableAttribute.cs
- SharedStatics.cs
- SignatureHelper.cs
- ZipFileInfo.cs
- WebServiceMethodData.cs
- BaseDataListPage.cs
- Int32AnimationUsingKeyFrames.cs
- GestureRecognitionResult.cs
- SafeTokenHandle.cs
- Int16AnimationBase.cs
- DoubleCollection.cs
- TextInfo.cs
- ObjectViewEntityCollectionData.cs
- ErrorLog.cs
- Point3DIndependentAnimationStorage.cs
- ETagAttribute.cs
- EditorZone.cs
- ParameterCollection.cs
- MergeFailedEvent.cs
- InternalTransaction.cs
- WebProxyScriptElement.cs
- BitmapSource.cs
- ConfigXmlSignificantWhitespace.cs
- DataGridViewCellMouseEventArgs.cs
- ObjectDataSourceEventArgs.cs
- BindingCollection.cs
- PaintValueEventArgs.cs
- PeerNameRecordCollection.cs
- CollectionViewGroup.cs
- ActiveXMessageFormatter.cs
- Token.cs
- EventEntry.cs
- EntityDataSourceStatementEditor.cs
- FieldAccessException.cs
- ActiveXHelper.cs
- CompleteWizardStep.cs
- InkCanvas.cs
- ToolStripDesigner.cs
- XslTransformFileEditor.cs
- BindUriHelper.cs
- RawStylusActions.cs
- UrlMappingsModule.cs
- ConnectionsZone.cs
- TableLayoutSettingsTypeConverter.cs
- AliasGenerator.cs
- CodeDomSerializerBase.cs
- EntityTemplateFactory.cs
- VectorCollection.cs
- BindingListCollectionView.cs
- RandomNumberGenerator.cs
- DataObjectAttribute.cs
- QueryOutputWriter.cs
- compensatingcollection.cs
- HttpWebRequest.cs
- SinglePageViewer.cs
- PropertyChangedEventArgs.cs
- SqlError.cs
- SoapMessage.cs
- coordinatorscratchpad.cs
- ShaderEffect.cs
- URI.cs
- RawStylusSystemGestureInputReport.cs
- RowToParametersTransformer.cs
- HtmlProps.cs
- CalendarAutoFormat.cs
- CodeArrayCreateExpression.cs
- PropertyIDSet.cs
- LogLogRecord.cs
- SqlDelegatedTransaction.cs
- ManagedWndProcTracker.cs
- BindingCollection.cs
- RadioButtonAutomationPeer.cs