Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / xsp / System / Web / Compilation / SimpleHandlerBuildProvider.cs / 1305376 / 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; [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); } } internal class WebServiceBuildProvider: SimpleHandlerBuildProvider { protected override SimpleWebHandlerParser CreateParser() { return new WebServiceParser(VirtualPath); } } internal class WebHandlerBuildProvider: SimpleHandlerBuildProvider { protected override SimpleWebHandlerParser CreateParser() { return new WebHandlerParser(VirtualPath); } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. //------------------------------------------------------------------------------ //// 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; [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); } } internal class WebServiceBuildProvider: SimpleHandlerBuildProvider { protected override SimpleWebHandlerParser CreateParser() { return new WebServiceParser(VirtualPath); } } internal class WebHandlerBuildProvider: SimpleHandlerBuildProvider { protected override SimpleWebHandlerParser CreateParser() { return new WebHandlerParser(VirtualPath); } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- Formatter.cs
- CorePropertiesFilter.cs
- WebPartUserCapability.cs
- Axis.cs
- WSHttpBindingCollectionElement.cs
- StringPropertyBuilder.cs
- GuidTagList.cs
- ConditionBrowserDialog.cs
- PageThemeBuildProvider.cs
- SqlTriggerContext.cs
- ErrorHandler.cs
- TypedDataSetSchemaImporterExtension.cs
- DriveInfo.cs
- DataSourceHelper.cs
- InfoCardRSAOAEPKeyExchangeDeformatter.cs
- LayoutDump.cs
- FormView.cs
- RoleGroup.cs
- ElementsClipboardData.cs
- DefaultEventAttribute.cs
- DataService.cs
- ParserContext.cs
- VisualTreeUtils.cs
- CompiledRegexRunner.cs
- SqlMethodAttribute.cs
- GridViewItemAutomationPeer.cs
- SchemaImporter.cs
- IgnoreFlushAndCloseStream.cs
- SessionStateItemCollection.cs
- Pair.cs
- IdleTimeoutMonitor.cs
- MetadataArtifactLoaderCompositeFile.cs
- NameObjectCollectionBase.cs
- ModelUIElement3D.cs
- IntSecurity.cs
- ListViewCancelEventArgs.cs
- _BufferOffsetSize.cs
- DataSourceCache.cs
- EventLogPermissionAttribute.cs
- RightNameExpirationInfoPair.cs
- Transform3D.cs
- SafeMILHandle.cs
- MimeParameterWriter.cs
- TraceContext.cs
- SqlExpander.cs
- VisemeEventArgs.cs
- path.cs
- DataGridViewTextBoxEditingControl.cs
- DbProviderSpecificTypePropertyAttribute.cs
- FileDetails.cs
- CallContext.cs
- XPathDocument.cs
- SafeThreadHandle.cs
- ModifierKeysValueSerializer.cs
- DependencyPropertyValueSerializer.cs
- SoapAttributeOverrides.cs
- LinqDataSourceUpdateEventArgs.cs
- MessageDispatch.cs
- SchemaDeclBase.cs
- PathSegment.cs
- ElementHost.cs
- UserCancellationException.cs
- InkPresenterAutomationPeer.cs
- X500Name.cs
- TextWriterTraceListener.cs
- MergeFailedEvent.cs
- SystemInfo.cs
- CdpEqualityComparer.cs
- BindingCompleteEventArgs.cs
- PropertyEntry.cs
- OleStrCAMarshaler.cs
- XhtmlBasicLabelAdapter.cs
- DataGridViewAutoSizeModeEventArgs.cs
- RenderCapability.cs
- ClientBuildManager.cs
- PolicyChain.cs
- DeleteIndexBinder.cs
- DescendentsWalkerBase.cs
- RuleSettingsCollection.cs
- SHA384CryptoServiceProvider.cs
- DesignerObjectListAdapter.cs
- SessionPageStatePersister.cs
- Currency.cs
- SelectionPattern.cs
- XmlNode.cs
- DocumentsTrace.cs
- NavigationProperty.cs
- DownloadProgressEventArgs.cs
- CompositeTypefaceMetrics.cs
- PersistChildrenAttribute.cs
- Rijndael.cs
- Enumerable.cs
- XmlRawWriter.cs
- Int16Storage.cs
- cookiecontainer.cs
- Int32Collection.cs
- BitmapPalette.cs
- RsaSecurityKey.cs
- ListInitExpression.cs
- Repeater.cs