Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System.Collections.Generic;
- namespace w3x.Common
- {
- /// <summary>
- /// Example input:
- /// app.exe -port 1234 -enableSomething -mode elevated silent somethingElse
- /// Interpreted as:
- /// { port : { 0 : "1234" } },
- /// { enableSomething },
- /// { mode : { 0 : elevated, 1 : silent, 2 : somethingElse } }
- /// </summary>
- public class ConsoleArguments : IArguments
- {
- public static class Arg
- {
- public const string Port = "port";
- }
- private IDictionary<string, IList<string>> _internal;
- private readonly ILogger _logger;
- public ConsoleArguments(ILogger logger)
- {
- _logger = logger;
- }
- #region IArguments
- public void Set(IEnumerable<string> args)
- {
- ProcessArguments(args);
- }
- public IList<string> Get(string name)
- {
- _logger.Debug(string.Format("Argument '{0}' accessed", name));
- return _internal[name];
- }
- #endregion
- private void ProcessArguments(IEnumerable<string> args)
- {
- _logger.Debug("Processing the arguments");
- _internal = new Dictionary<string, IList<string>>();
- var lastArg = string.Empty;
- foreach (var arg in args)
- {
- if (!arg.StartsWith("-"))
- {
- if (!string.IsNullOrEmpty(lastArg))
- _internal[lastArg].Add(arg);
- continue;
- }
- lastArg = arg.Substring(1);
- _internal.Add(lastArg, new List<string>());
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment