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; }
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; }
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; }