示例#1
0
        /// <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);
            }
        }