public static ArgumentMap GetArguments(this Parameter.Choice.Option option) { if (option == null) { throw new ArgumentNullException("option"); } // To readers: This field was originally _arguments but I decided to expose it in IL. return(option.arguments); }
/// <summary> /// Construct a new <see cref="WrappedChoiceOption"/> from the given parent <see cref="WrappedChoice"/> and the given option within said choice. /// </summary> /// <param name="choice"></param> /// <param name="option"></param> /// <param name="args"></param> public WrappedChoiceOption(WrappedChoice choice, Parameter.Choice.Option option, ArgumentMap args = null) { Name = option.name; ParentChoice = choice; BaseOption = option; Arguments = args ?? option.arguments; // _arguments was exposed via an IL edit that I did. This is not possible under normal OOO behavior. // I aim to undo this soon as a method is better for the sake of uniformity. List <WrappedDirect> newDirects = new List <WrappedDirect>(); foreach (Parameter.Direct direct in choice.BaseChoice.directs) { Parameter.Direct newDirect = (Parameter.Direct)direct.clone(); // Thank god for their DeepObject class. newDirects.Add(new WrappedDirect(choice.Config, newDirect, choice, Arguments)); } Directs = newDirects.ToArray(); }