Esempio n. 1
0
        /// <summary>
        /// IDataReader의 컬럼명의 값을 가져옵니다. 없으면 <paramref name="valueFactory"/>의 반환값을 반환합니다.
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="reader"></param>
        /// <param name="index"></param>
        /// <param name="valueFactory"></param>
        /// <returns></returns>
        public static T AsValue <T>(this IDataReader reader, int index, Func <T> valueFactory = null)
        {
            valueFactory = valueFactory ?? (() => default(T));

            return
                (With.TryFunction(() => reader.IsDBNull(index) ? valueFactory() : ConvertTool.AsValue <T>(reader.GetValue(index)),
                                  exceptionAction:
                                  ex => {
                if (IsInfoEnabled)
                {
                    log.Info("IDataReader로부터 값을 얻는데 실패했습니다. index=[{0}]", index);
                    log.Info(ex);
                }
            }));
        }