Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / clr / src / BCL / System / Reflection / Emit / ModuleBuilderData.cs / 1305376 / ModuleBuilderData.cs
// ==++== // // Copyright (c) Microsoft Corporation. All rights reserved. // // ==--== //////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////// //[....] // namespace System.Reflection.Emit { using System; using System.Diagnostics.Contracts; using System.Globalization; using System.IO; using System.Reflection; using System.Runtime.Versioning; // This is a package private class. This class hold all of the managed // data member for ModuleBuilder. Note that what ever data members added to // this class cannot be accessed from the EE. [Serializable] internal class ModuleBuilderData { [System.Security.SecurityCritical] // auto-generated [ResourceExposure(ResourceScope.Machine)] [ResourceConsumption(ResourceScope.Machine)] internal ModuleBuilderData(ModuleBuilder module, String strModuleName, String strFileName, int tkFile) { m_globalTypeBuilder = new TypeBuilder(module); m_module = module; m_tkFile = tkFile; InitNames(strModuleName, strFileName); } // Initialize module and file names. [System.Security.SecurityCritical] // auto-generated [ResourceExposure(ResourceScope.Machine)] [ResourceConsumption(ResourceScope.Machine)] private void InitNames(String strModuleName, String strFileName) { m_strModuleName = strModuleName; if (strFileName == null) { // fake a transient module file name m_strFileName = strModuleName; } else { String strExtension = Path.GetExtension(strFileName); if (strExtension == null || strExtension == String.Empty) { // This is required by our loader. It cannot load module file that does not have file extension. throw new ArgumentException(Environment.GetResourceString("Argument_NoModuleFileExtension", strFileName)); } m_strFileName = strFileName; } } // This is a method for changing module and file name of the manifest module (created by default for // each assembly). [System.Security.SecurityCritical] // auto-generated [ResourceExposure(ResourceScope.Machine)] [ResourceConsumption(ResourceScope.Machine)] internal virtual void ModifyModuleName(String strModuleName) { Contract.Assert(m_strModuleName == AssemblyBuilder.MANIFEST_MODULE_NAME, "Changing names for non-manifest module"); InitNames(strModuleName, null /*strFileName*/); } internal int FileToken { get { // Before save, the scope of m_tkFile is the in-memory assembly manifest // During save, the scope of m_tkFile is the on-disk assembly manifest // For transient modules m_tkFile never change. // Theoretically no one should emit anything after a dynamic assembly has // been saved. So m_tkFile shouldn't used when m_isSaved is true. // But that was never completely enforced: you can still emit everything after // the assembly has been saved (except for public types in persistent modules). return m_tkFile; } set { m_tkFile = value; } } internal String m_strModuleName; // scope name (can be different from file name) internal String m_strFileName; internal bool m_fGlobalBeenCreated; internal bool m_fHasGlobal; [NonSerialized] internal TypeBuilder m_globalTypeBuilder; [NonSerialized] internal ModuleBuilder m_module; private int m_tkFile; internal bool m_isSaved; [NonSerialized] internal ResWriterData m_embeddedRes; internal const String MULTI_BYTE_VALUE_CLASS = "$ArrayType$"; internal String m_strResourceFileName; internal byte[] m_resourceBytes; } // class ModuleBuilderData } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // ==++== // // Copyright (c) Microsoft Corporation. All rights reserved. // // ==--== //////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////// //[....] // namespace System.Reflection.Emit { using System; using System.Diagnostics.Contracts; using System.Globalization; using System.IO; using System.Reflection; using System.Runtime.Versioning; // This is a package private class. This class hold all of the managed // data member for ModuleBuilder. Note that what ever data members added to // this class cannot be accessed from the EE. [Serializable] internal class ModuleBuilderData { [System.Security.SecurityCritical] // auto-generated [ResourceExposure(ResourceScope.Machine)] [ResourceConsumption(ResourceScope.Machine)] internal ModuleBuilderData(ModuleBuilder module, String strModuleName, String strFileName, int tkFile) { m_globalTypeBuilder = new TypeBuilder(module); m_module = module; m_tkFile = tkFile; InitNames(strModuleName, strFileName); } // Initialize module and file names. [System.Security.SecurityCritical] // auto-generated [ResourceExposure(ResourceScope.Machine)] [ResourceConsumption(ResourceScope.Machine)] private void InitNames(String strModuleName, String strFileName) { m_strModuleName = strModuleName; if (strFileName == null) { // fake a transient module file name m_strFileName = strModuleName; } else { String strExtension = Path.GetExtension(strFileName); if (strExtension == null || strExtension == String.Empty) { // This is required by our loader. It cannot load module file that does not have file extension. throw new ArgumentException(Environment.GetResourceString("Argument_NoModuleFileExtension", strFileName)); } m_strFileName = strFileName; } } // This is a method for changing module and file name of the manifest module (created by default for // each assembly). [System.Security.SecurityCritical] // auto-generated [ResourceExposure(ResourceScope.Machine)] [ResourceConsumption(ResourceScope.Machine)] internal virtual void ModifyModuleName(String strModuleName) { Contract.Assert(m_strModuleName == AssemblyBuilder.MANIFEST_MODULE_NAME, "Changing names for non-manifest module"); InitNames(strModuleName, null /*strFileName*/); } internal int FileToken { get { // Before save, the scope of m_tkFile is the in-memory assembly manifest // During save, the scope of m_tkFile is the on-disk assembly manifest // For transient modules m_tkFile never change. // Theoretically no one should emit anything after a dynamic assembly has // been saved. So m_tkFile shouldn't used when m_isSaved is true. // But that was never completely enforced: you can still emit everything after // the assembly has been saved (except for public types in persistent modules). return m_tkFile; } set { m_tkFile = value; } } internal String m_strModuleName; // scope name (can be different from file name) internal String m_strFileName; internal bool m_fGlobalBeenCreated; internal bool m_fHasGlobal; [NonSerialized] internal TypeBuilder m_globalTypeBuilder; [NonSerialized] internal ModuleBuilder m_module; private int m_tkFile; internal bool m_isSaved; [NonSerialized] internal ResWriterData m_embeddedRes; internal const String MULTI_BYTE_VALUE_CLASS = "$ArrayType$"; internal String m_strResourceFileName; internal byte[] m_resourceBytes; } // class ModuleBuilderData } // 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
- TabletDeviceInfo.cs
- MenuItemCollection.cs
- TableRowGroup.cs
- LinearGradientBrush.cs
- KnownColorTable.cs
- CodeSnippetCompileUnit.cs
- XsltQilFactory.cs
- StatusBarDrawItemEvent.cs
- SQLBinaryStorage.cs
- ComponentSerializationService.cs
- HandleRef.cs
- COM2DataTypeToManagedDataTypeConverter.cs
- MemberPathMap.cs
- AppDomainGrammarProxy.cs
- HttpHandlerActionCollection.cs
- TreeNodeBinding.cs
- BrowserPolicyValidator.cs
- ParallelTimeline.cs
- ImageListStreamer.cs
- TransformGroup.cs
- RefreshPropertiesAttribute.cs
- ImageConverter.cs
- BuildManagerHost.cs
- BoolLiteral.cs
- Events.cs
- SqlClientFactory.cs
- HtmlInputImage.cs
- DataViewSettingCollection.cs
- WebPartUserCapability.cs
- AsymmetricKeyExchangeDeformatter.cs
- QuestionEventArgs.cs
- DataBoundControlHelper.cs
- ContractTypeNameElement.cs
- Vector3DCollectionConverter.cs
- SendKeys.cs
- ReaderWriterLockWrapper.cs
- DebugView.cs
- BindingValueChangedEventArgs.cs
- SymDocumentType.cs
- Exceptions.cs
- DataSourceCache.cs
- HttpListenerException.cs
- DataGridViewTextBoxCell.cs
- SoapAttributes.cs
- PageCodeDomTreeGenerator.cs
- TimeSpanConverter.cs
- RsaSecurityToken.cs
- DataListItemEventArgs.cs
- FileDialog.cs
- NodeCounter.cs
- BoundPropertyEntry.cs
- UserControlParser.cs
- LineServicesRun.cs
- SessionEndedEventArgs.cs
- XPathCompileException.cs
- GreenMethods.cs
- BindingsCollection.cs
- PageThemeCodeDomTreeGenerator.cs
- TrustManagerMoreInformation.cs
- DataGridCaption.cs
- GlyphCache.cs
- InfoCardHelper.cs
- EventRouteFactory.cs
- SharedTcpTransportManager.cs
- ServiceHostingEnvironment.cs
- RadioButtonRenderer.cs
- ModifiableIteratorCollection.cs
- ClientTarget.cs
- HashCodeCombiner.cs
- DataGridViewComboBoxColumn.cs
- ContentPlaceHolder.cs
- KeyValueSerializer.cs
- XmlDataFileEditor.cs
- ResourcePart.cs
- Control.cs
- BoundColumn.cs
- EntityDataSourceUtil.cs
- DefaultAuthorizationContext.cs
- StringExpressionSet.cs
- BufferedGraphics.cs
- WorkflowMessageEventArgs.cs
- DataBindingsDialog.cs
- ToggleProviderWrapper.cs
- DataBindingCollection.cs
- EvidenceBase.cs
- ControlsConfig.cs
- UseAttributeSetsAction.cs
- SchemaTypeEmitter.cs
- DateTimeOffsetAdapter.cs
- DataGridCell.cs
- SqlUserDefinedTypeAttribute.cs
- CultureInfoConverter.cs
- DoubleAnimation.cs
- WebPartDisplayMode.cs
- BackEase.cs
- _ConnectOverlappedAsyncResult.cs
- DbDataReader.cs
- MobileControlsSectionHelper.cs
- PreservationFileWriter.cs
- RMPermissions.cs