public ProxyServiceDefinition(ServiceDefinition serviceDefinition, Type proxyType) : base(serviceDefinition.ServiceType, serviceDefinition.Lifetime) { ProxyType = proxyType; ServiceDefinition = serviceDefinition; if (serviceDefinition.ServiceType.GetTypeInfo().IsClass) { ClassProxyServiceDefinition = new TypeServiceDefinition(serviceDefinition.ServiceType, ProxyType, serviceDefinition.Lifetime); } }
private Func <ServiceResolver, object> ResolveTypeService(TypeServiceDefinition typeServiceDefinition) { var callSite = _constructorCallSiteResolver.Resolve(typeServiceDefinition.ImplementationType); if (callSite == null) { throw new InvalidOperationException( $"Failed to create instance of type '{typeServiceDefinition.ServiceType}'. Possible reason is cannot match the best constructor of type '{typeServiceDefinition.ImplementationType}'."); } return(callSite); }