1 // 2 // Mono.ILASM.GenericMethodSig 3 // 4 // Author(s): 5 // Jackson Harper (jackson@ximian.com) 6 // 7 // (C) 2003 Ximian, Inc (http://www.ximian.com) 8 // 9 10 using System; 11 using System.Collections; 12 13 namespace Mono.ILASM { 14 15 public class GenericMethodSig { 16 17 private GenericArguments gen_args; 18 private bool is_resolved; 19 private PEAPI.GenericMethodSig sig; 20 21 private static Hashtable sig_table; 22 GenericMethodSig(GenericArguments gen_args)23 public GenericMethodSig (GenericArguments gen_args) 24 { 25 this.gen_args = gen_args; 26 is_resolved = false; 27 } 28 29 public PEAPI.GenericMethodSig Sig { 30 get { return sig; } 31 } 32 Resolve(CodeGen code_gen)33 public PEAPI.GenericMethodSig Resolve (CodeGen code_gen) 34 { 35 if (is_resolved) 36 return sig; 37 38 sig = new PEAPI.GenericMethodSig (gen_args.Resolve (code_gen)); 39 is_resolved = true; 40 41 return sig; 42 } 43 GetInstance(GenericArguments gen_args)44 public static GenericMethodSig GetInstance (GenericArguments gen_args) 45 { 46 GenericMethodSig sig = null; 47 48 if (sig_table == null) 49 sig_table = new Hashtable (); 50 else 51 sig = (GenericMethodSig) sig_table [gen_args.ToString ()]; 52 53 if (sig == null) { 54 sig = new GenericMethodSig (gen_args); 55 sig_table [gen_args.ToString ()] = sig; 56 } 57 58 return sig; 59 } 60 } 61 62 } 63 64 65