2 using System.Reflection;
3 using System.Resources;
5 using System.Security.Policy;
6 using System.Runtime.Serialization;
7 using System.Globalization;
8 using System.Runtime.CompilerServices;
10 namespace System.Reflection.Emit {
11 public sealed class AssemblyBuilder : Assembly {
13 private MethodInfo entry_point;
15 public override string CodeBase {get {return null;}}
16 public override MethodInfo EntryPoint {get {return entry_point;}}
18 public override string Location {get {return null;}}
21 public void AddResourceFile( string name, string fileName) {
23 public void AddResourceFile( string name, string fileName, ResourceAttributes attribute) {
25 [MethodImplAttribute(MethodImplOptions.InternalCall)]
26 private static extern ModuleBuilder defineModule (AssemblyBuilder ab, string name, string filename);
28 public ModuleBuilder DefineDynamicModule( string name) {
31 public ModuleBuilder DefineDynamicModule( string name, bool emitSymbolInfo) {
34 public ModuleBuilder DefineDynamicModule( string name, string fileName) {
35 return defineModule (this, name, fileName);
37 public ModuleBuilder DefineDynamicModule( string name, string fileName, bool emitSymbolInfo) {
40 public IResourceWriter DefineResource( string name, string description, string fileName) {
43 public IResourceWriter DefineResource( string name, string description, string fileName, ResourceAttributes attribute) {
46 public void DefineUnmanagedResource( byte[] resource) {
48 public void DefineUnmanagedResource( string resourceFileName) {
50 public void DefineVersionInfoResource() {
52 public void DefineVersionInfoResource( string product, string productVersion, string company, string copyright, string trademark) {
54 public ModuleBuilder GetDynamicModule( string name) {
57 public override Type[] GetExportedTypes() {
60 public override FileStream GetFile( string name) {
63 /*public virtual FileStream[] GetFiles() {
66 public override FileStream[] GetFiles( bool getResourceModules) {
69 public Module[] GetLoadedModules() {
72 public Module[] GetLoadedModules( bool getResourceModules) {
75 /*public virtual ManifestResourceInfo GetManifestResourceInfo( string resourceName) {
78 public virtual string[] GetManifestResourceNames() {
81 public virtual Stream GetManifestResourceStream( string name) {
84 public virtual Stream GetManifestResourceStream( Type type, string name) {
87 public Module GetModule( string name) {
90 public Module[] GetModules() {
93 public Module[] GetModules( bool getResourceModules) {
96 /*public virtual AssemblyName GetName() {
99 public virtual AssemblyName GetName( bool copiedName) {
102 public virtual void GetObjectData( SerializationInfo info, StreamingContext context) {
104 public AssemblyName[] GetReferencedAssemblies() {
107 public Assembly GetSatelliteAssembly( CultureInfo culture) {
111 public Assembly GetSatelliteAssembly( CultureInfo culture, Version version) {
114 /*public virtual Type GetType( string name) {
117 public virtual Type GetType( string name, bool throwOnError) {
120 public Type GetType( string name, bool throwOnError, bool ignoreCase) {
123 /*public virtual Type[] GetTypes() {
126 public virtual bool IsDefined( Type attributeType, bool inherit) {
129 public static Assembly Load( AssemblyName assemblyRef) {
133 public static Assembly Load( byte[] rawAssembly) {
137 public static Assembly Load( string assemblyString) {
141 public static Assembly Load( AssemblyName assemblyRef, Evidence assemblySecurity) {
145 public static Assembly Load( byte[] rawAssembly, byte[] rawSymbolStore) {
149 public static Assembly Load( string assemblyString, Evidence assemblySecurity) {
153 public static Assembly Load( byte[] rawAssembly, byte[] rawSymbolStore, Evidence securityEvidence) {
156 public static Assembly LoadFrom( string assemblyFile) {
160 public static Assembly LoadFrom( string assemblyFile, Evidence securityEvidence) {
163 public Module LoadModule( string moduleName, byte[] rawModule) {
167 public Module LoadModule( string moduleName, byte[] rawModule, byte[] rawSymbolStore) {
170 public override string ToString() {
171 return "AssemblyBuilder";
174 [MethodImplAttribute(MethodImplOptions.InternalCall)]
175 private static extern int getDataChunk (AssemblyBuilder ab, int type, byte[] buf);
177 public void Save( string assemblyFileName) {
178 byte[] buf = new byte[8192];
179 FileStream file = new FileStream (assemblyFileName, FileMode.OpenOrCreate, FileAccess.Write);
182 count = getDataChunk (this, 0, buf);
184 file.Write (buf, 0, count);
185 count = getDataChunk (this, 1, buf); /* may be a too small buffer */
186 file.Write (buf, 0, count);
191 public void SetEntryPoint(MethodInfo entryMethod) {
192 entry_point = entryMethod;