/// <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?AsValueNullable <T>(this IDataReader reader, int index, Func <T?> valueFactory = null) where T : struct { valueFactory = valueFactory ?? (() => default(T?)); return (With.TryFunction( () => reader.IsDBNull(index) ? null : ConvertTool.AsValueNullable <T>(reader.GetValue(index), valueFactory), exceptionAction: ex => { if (IsInfoEnabled) { log.Info("IDataReader로부터 값을 얻는데 실패했습니다. index=[{0}]", index); log.Info(ex); } })); }