private IHandler CreateHandler(ComponentModel model) { if (model.RequiresGenericArguments) { var matchingStrategy = (IGenericImplementationMatchingStrategy)model.ExtendedProperties[ComponentModel.GenericImplementationMatchingStrategy]; return(new DefaultGenericHandler(model, matchingStrategy)); } var resolveExtensions = model.ResolveExtensions(false); var releaseExtensions = model.ReleaseExtensions(false); if (releaseExtensions == null && resolveExtensions == null) { return(new DefaultHandler(model)); } return(new ExtendedHandler(model, resolveExtensions, releaseExtensions)); }
private IHandler CreateHandler(ComponentModel model) { if (model.RequiresGenericArguments) { var matchingStrategy = GenericImplementationMatchingStrategy(model); var serviceStrategy = GenericServiceStrategy(model); return(new DefaultGenericHandler(model, matchingStrategy, serviceStrategy)); } // meta descriptors only apply to open generic handlers so we cam safely let go of them, save some memory ComponentModelDescriptorUtil.RemoveMetaDescriptors(model); var resolveExtensions = model.ResolveExtensions(false); var releaseExtensions = model.ReleaseExtensions(false); if (releaseExtensions == null && resolveExtensions == null) { return(new DefaultHandler(model)); } return(new ExtendedHandler(model, resolveExtensions, releaseExtensions)); }