@@ -10,7 +10,14 @@ public abstract class BaseConfiguration
1010 /// </summary>
1111 private static dynamic _commandLineArgumentConfiguration = JsonConvert . DeserializeObject ( "{}" ) ;
1212
13- private static T GetFromAny < T > ( string key )
13+ /// <summary>
14+ /// Tries to get the value matching given key from arguments first, then from environment.
15+ /// </summary>
16+ /// <typeparam name="T">
17+ /// </typeparam>
18+ /// <param name="key">
19+ /// </param>
20+ public static T GetFromAny < T > ( string key )
1421 {
1522 var value = GetFromArguments < T > ( key ) ;
1623
@@ -21,6 +28,16 @@ private static T GetFromAny<T>(string key)
2128 return value ;
2229 }
2330
31+ /// <summary>
32+ /// Tries to get the value matching given key from arguments first, then from environment.
33+ /// The fallback will be returned if the value is the default of specified type
34+ /// </summary>
35+ /// <typeparam name="T">
36+ /// </typeparam>
37+ /// <param name="key">
38+ /// </param>
39+ /// <param name="fallback">
40+ /// </param>
2441 public static T GetFromAny < T > ( string key , T fallback )
2542 {
2643 var value = GetFromAny < T > ( key ) ;
@@ -35,8 +52,6 @@ public static T GetFromAny<T>(string key, T fallback)
3552 /// </typeparam>
3653 /// <param name="key">
3754 /// </param>
38- /// <returns>
39- /// </returns>
4055 public static T GetFromEnvironment < T > ( string key )
4156 {
4257 var value = Environment . GetEnvironmentVariable ( key ) ;
@@ -57,8 +72,8 @@ public static T GetFromEnvironment<T>(string key)
5772 /// </param>
5873 /// <param name="fallback">
5974 /// </param>
60- /// <returns >
61- /// </returns >
75+ /// <param name="fallback" >
76+ /// </param >
6277 public static T GetFromEnvironment < T > ( string key , T fallback )
6378 {
6479 var value = GetFromArguments < T > ( key ) ;
@@ -73,8 +88,6 @@ public static T GetFromEnvironment<T>(string key, T fallback)
7388 /// </typeparam>
7489 /// <param name="key">
7590 /// </param>
76- /// <returns>
77- /// </returns>
7891 public static T GetFromArguments < T > ( string key )
7992 {
8093 var value = _commandLineArgumentConfiguration [ key ] ;
@@ -89,31 +102,27 @@ public static T GetFromArguments<T>(string key)
89102 /// Gets value from command line arguments. The fallback will be returned if the value is the
90103 /// default of specified type type of T
91104 /// </summary>
92- /// <typeparam name="T">
93- /// </typeparam>
94105 /// <param name="key">
95106 /// </param>
96107 /// <param name="fallback">
97108 /// </param>
98- /// <returns>
99- /// </returns>
100109 public static T GetFromArguments < T > ( string key , T fallback )
101110 {
102111 var value = GetFromArguments < T > ( key ) ;
103112
104- return value . Equals ( default ( T ) ) ? fallback : value ;
113+ if ( value == null || value . Equals ( default ( T ) ) )
114+ return fallback ;
115+
116+ return value ;
105117 }
106118
107119 /// <summary>
108120 /// Convert given json string to a dynamic object which can later be used to retreive
109121 /// configuration values. This value is memoized because it can take over 100ms to
110122 /// deserialize jsonString.
111123 /// </summary>
112- /// ///
113124 /// <param name="jsonString">
114125 /// </param>
115- /// <returns>
116- /// </returns>
117126 public static void SetCommandLineArgsConfiguration ( string jsonString )
118127 {
119128 if ( jsonString == string . Empty )
0 commit comments