/// <summary> /// Try/catch wrapper, will throw exceptions if locator is configured to, and requested service is not registered. /// </summary> /// <typeparam name="T"></typeparam> /// <param name="builder"></param> /// <param name="allowedNulls"></param> /// <param name="serviceType"></param> /// <param name="errorMessage"></param> /// <param name="defaultValue"></param> /// <returns></returns> protected virtual T TryGet <T>(Func <T> builder, IEnumerable <Type> allowedNulls, Type serviceType, string errorMessage, T defaultValue) { try { return(builder()); } catch (Exception e) { if (allowedNulls.Any(x => _ReflectionHelper.IsAssignableFrom(x, serviceType))) { return(defaultValue); } throw new Exception(errorMessage, e); } }