Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Has the approach to verbs in v2 changed? #500

Open
ravensorb opened this issue Nov 2, 2017 · 6 comments
Open

Has the approach to verbs in v2 changed? #500

ravensorb opened this issue Nov 2, 2017 · 6 comments

Comments

@ravensorb
Copy link

I was reviewing the code and the following wiki for vers
https://github.com/gsscoder/commandline/wiki/Latest-Version and I cannot see how they line up.

Ex - the following will not compile

var result = CommandLine.Parser.Default.ParseArguments<AddOptions, UpdateOptions, DeleteOptions(args).MapResult(
    (AddOptions aopts) => {},
    (UpdateOptions upopts) => {},
    (DeleteOptions dopts) => {});

It complains that there is no support for more than one Generic and from looking at the code, I didn't see any overrides or extensions to ParseArguments that supports multiple generics. So I was curious if the approach had changed.

@nemec
Copy link
Collaborator

nemec commented Nov 2, 2017

Two things:

  1. MapResult has a final delegate parameter that is required to be of type IEnumerable<Error> for any errors.
  2. Each delegate must return a value - they are Func not Action and each value must be the same type. If you quickly add return ""; to each of those it compiles for me.

@ravensorb
Copy link
Author

Cool So i just tried build 2.1.1-beta and I cannot get the snippet above to compile

error CS0305: Using the generic method 'Parser.ParseArguments<T>(IEnumerable<string>)' requires 1 type arguments

@nemec
Copy link
Collaborator

nemec commented Nov 2, 2017

Did it mention a file/line number?

@ravensorb
Copy link
Author

Its in my simple test app and when I look at the object explorer I only see a ParseArguments and not other overloads for more generic args.

@nemec
Copy link
Collaborator

nemec commented Nov 2, 2017

Sorry I misread and thought you were building the source code of the library. This worked for me on the latest beta:

var result = CommandLine.Parser.Default.ParseArguments<AddOptions, UpdateOptions, DeleteOptions(args).MapResult(
    (AddOptions aopts) => {return ""; },
    (UpdateOptions upopts) => {return ""; },
    (DeleteOptions dopts) => {return ""; },
    (IEnumerable<Error> errs) => {return ""; });

@ravensorb
Copy link
Author

That helped -- I found the issue :) It appears you must add the using statement

using CommnadLine;

Without that it doesn't find the extension methods or the Error option.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants