/// <summary> /// Finds the appropriate toolchain-generated proxy instance class for the given /// interface and proxy class. /// </summary> /// <param name="proxyClassTypeHandle">The proxy class the proxy instance class derives from/ /// forwards its method calls to.</param> /// <param name="interfaceTypeHandle">The interface that the proxy instance class /// implements.</param> /// <returns>The type handle for the requested proxy instance class type.</returns> /// <exception cref="System.Reflection.DispatchProxyInstanceNotFoundException"> /// Thrown when no generated proxy instance class exists for the requested proxy class /// and interface class types. /// </exception> public static RuntimeTypeHandle GetConcreteProxyType(RuntimeTypeHandle proxyClassTypeHandle, RuntimeTypeHandle interfaceTypeHandle) { for (int i = 0; i < s_entryTable.Length; i++) { if ((s_entryTable[i].ProxyClassType.Equals(proxyClassTypeHandle)) && (s_entryTable[i].InterfaceType.Equals(interfaceTypeHandle))) { return s_entryTable[i].ImplementationClassType; } } throw new DispatchProxyInstanceNotFoundException( "Could not find an DispatchProxy implementation class for the interface type '" + interfaceTypeHandle.ToString() + "' and the proxy class type '" + proxyClassTypeHandle.ToString() + "'." ); }