|  |  | 
|  | using System; | 
|  |  | 
|  | namespace RemoteView | 
|  | { | 
|  | class Configuration | 
|  | { | 
|  | /// <summary> | 
|  | /// Display banner | 
|  | /// </summary> | 
|  | public bool Banner { get; private set; } | 
|  |  | 
|  | /// <summary> | 
|  | /// Display help | 
|  | /// </summary> | 
|  | public bool Help { get; private set; } | 
|  |  | 
|  | /// <summary> | 
|  | /// Port where to listen | 
|  | /// </summary> | 
|  | public int Port { get; private set; } | 
|  |  | 
|  | /// <summary> | 
|  | /// Private c'tor with default values for object instances | 
|  | /// Use factory method instead of instatiating c'tor | 
|  | /// </summary> | 
|  | private Configuration() | 
|  | { | 
|  | this.Banner = true; | 
|  | this.Help = false; | 
|  | this.Port = 6060; | 
|  | } | 
|  |  | 
|  | public static Configuration CreateConfiguration(string[] args) | 
|  | { | 
|  | Configuration conf = new Configuration(); | 
|  |  | 
|  | // parse command line params | 
|  |  | 
|  | foreach (string arg in args) | 
|  | { | 
|  | if (arg.Equals("-b")) | 
|  | { | 
|  | conf.Banner = false; | 
|  | } | 
|  | else if (arg.Equals("-h")) | 
|  | { | 
|  | conf.Help = true; | 
|  | } | 
|  | else if (arg.StartsWith("-p")) | 
|  | { | 
|  | try | 
|  | { | 
|  | conf.Port = int.Parse(arg); | 
|  | } | 
|  | catch | 
|  | { | 
|  | throw new ArgumentException(string.Format("Error: {0} is not a valid port number.", arg)); | 
|  | } | 
|  | } | 
|  | else | 
|  | { | 
|  | throw new ArgumentException(string.Format("Error: {0} is an invalid command line parameter.", arg)); | 
|  | } | 
|  | } | 
|  |  | 
|  | return conf; | 
|  | } | 
|  | } | 
|  | } |