Beispiel #1
0
 private ITypeReference ResolveTypeReference(IR.TypeReference typeRef)
 {
     var xAsm = ResolveAssemblyReference(typeRef.Assembly);
     // todo: add support for generic parameters
     var xTypeRef = UnitHelper.FindType(mHostEnvironment.NameTable, (IUnit)xAsm, typeRef.FullName);
     if (xTypeRef == null)
     {
         throw new Exception("Type not found!");
     }
     return xTypeRef;
 }
Beispiel #2
0
 private IAssemblyReference ResolveAssemblyReference(IR.AssemblyReference assemblyRef)
 {
     var xAsmName = mHostEnvironment.NameTable.GetNameFor(assemblyRef.Name);
     var xAsm = mHostEnvironment.LoadAssembly(new AssemblyIdentity(xAsmName, "", new Version(), new byte[0], assemblyRef.Location));
     if (xAsm == null)
     {
         throw new Exception("Assembly not found!");
     }
     return xAsm;
 }
Beispiel #3
0
 private IMethodReference ResolveMethodReference(IR.MethodReference methodRef, IEnumerable<Expression> parameters)
 {
     var xTypeRef = ResolveTypeReference(methodRef.DeclaringType);
     // todo: add support for parameters
     var xResult = TypeHelper.GetMethod(xTypeRef.ResolvedType, mHostEnvironment.NameTable.GetNameFor(methodRef.Name), (from item in parameters
                                                                                                                       select ResolveTypeReference(item.ResultType)).ToArray());
     if (xResult == null)
     {
         throw new Exception("Method not found!");
     }
     return xResult;
 }