Free cookie consent management tool by TermsFeed Policy Generator

source: branches/PersistentDataStructures/HeuristicLab.ExtLibs/HeuristicLab.EPPlus/4.0.3/EPPlus-4.0.3/Utils/ArgumentExtensions.cs @ 16749

Last change on this file since 16749 was 12074, checked in by sraggl, 10 years ago

#2341: Added EPPlus-4.0.3 to ExtLibs

File size: 4.1 KB
Line 
1/*******************************************************************************
2 * You may amend and distribute as you like, but don't remove this header!
3 *
4 * EPPlus provides server-side generation of Excel 2007/2010 spreadsheets.
5 * See http://www.codeplex.com/EPPlus for details.
6 *
7 * Copyright (C) 2011  Jan Källman
8 *
9 * This library is free software; you can redistribute it and/or
10 * modify it under the terms of the GNU Lesser General Public
11 * License as published by the Free Software Foundation; either
12 * version 2.1 of the License, or (at your option) any later version.
13
14 * This library is distributed in the hope that it will be useful,
15 * but WITHOUT ANY WARRANTY; without even the implied warranty of
16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 
17 * See the GNU Lesser General Public License for more details.
18 *
19 * The GNU Lesser General Public License can be viewed at http://www.opensource.org/licenses/lgpl-license.php
20 * If you unfamiliar with this license or have questions about it, here is an http://www.gnu.org/licenses/gpl-faq.html
21 *
22 * All code and executables are provided "as is" with no warranty either express or implied.
23 * The author accepts no liability for any damage or loss of business that this product may cause.
24 *
25 * Code change notes:
26 *
27 * Author             Change            Date
28 * ******************************************************************************
29 * Mats Alm                       Added                   2011-01-01
30 * Jan Källman        License changed GPL-->LGPL  2011-12-27
31 *******************************************************************************/
32
33using System;
34using System.Collections.Generic;
35using System.Linq;
36using System.Text;
37
38namespace OfficeOpenXml.Utils
39{
40    /// <summary>
41    /// Extension methods for guarding
42    /// </summary>
43    public static class ArgumentExtensions
44    {
45
46        /// <summary>
47        /// Throws an ArgumentNullException if argument is null
48        /// </summary>
49        /// <typeparam name="T">Argument type</typeparam>
50        /// <param name="argument">Argument to check</param>
51        /// <param name="argumentName">parameter/argument name</param>
52        /// <exception cref="ArgumentNullException"></exception>
53        public static void IsNotNull<T>(this IArgument<T> argument, string argumentName)
54            where T : class
55        {
56            argumentName = string.IsNullOrEmpty(argumentName) ? "value" : argumentName;
57            if (argument.Value == null)
58            {
59                throw new ArgumentNullException(argumentName);
60            }
61        }
62
63        /// <summary>
64        /// Throws an <see cref="ArgumentNullException"/> if the string argument is null or empty
65        /// </summary>
66        /// <param name="argument">Argument to check</param>
67        /// <param name="argumentName">parameter/argument name</param>
68        /// <exception cref="ArgumentNullException"></exception>
69        public static void IsNotNullOrEmpty(this IArgument<string> argument, string argumentName)
70        {
71            if (string.IsNullOrEmpty(argument.Value))
72            {
73                throw new ArgumentNullException(argumentName);
74            }
75        }
76
77        /// <summary>
78        /// Throws an ArgumentOutOfRangeException if the value of the argument is out of the supplied range
79        /// </summary>
80        /// <typeparam name="T">Type implementing <see cref="IComparable"/></typeparam>
81        /// <param name="argument">The argument to check</param>
82        /// <param name="min">Min value of the supplied range</param>
83        /// <param name="max">Max value of the supplied range</param>
84        /// <param name="argumentName">parameter/argument name</param>
85        /// <exception cref="ArgumentOutOfRangeException"></exception>
86        public static void IsInRange<T>(this IArgument<T> argument, T min, T max, string argumentName)
87            where T : IComparable
88        {
89            if (!(argument.Value.CompareTo(min) >= 0 && argument.Value.CompareTo(max) <= 0))
90            {
91                throw new ArgumentOutOfRangeException(argumentName);
92            }
93        }
94    }
95}
Note: See TracBrowser for help on using the repository browser.