private static Func <object> GetResolveMethod(Type type, IApplicationHost applicationHost) { var interfaceMethod = typeof(IApplicationHost).GetMethod(nameof(IApplicationHost.Resolve)); var interfaceMap = applicationHost.GetType().GetInterfaceMap(typeof(IApplicationHost)); var implementationMethodIndex = Array.IndexOf(interfaceMap.InterfaceMethods, interfaceMethod); return(() => interfaceMap.TargetMethods[implementationMethodIndex] .MakeGenericMethod(type) .Invoke(applicationHost, null)); }