[ https://issues.apache.org/jira/browse/TINKERPOP-1752?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16125960#comment-16125960 ]
Florian Hockmann commented on TINKERPOP-1752: --------------------------------------------- I already put some time into this, but unfortunately I didn't have enough time yet to get it completely working as this involves of course some edge cases around types that we simply don't have in C# like {{Comparator}}. Most methods already look quite good. The problem with the {{Group}} step mentioned in TINKERPOP-1751 for example would already be resolved: {code} /// <summary> /// Adds the group step to this <see cref="GraphTraversal{SType, EType}" />. /// </summary> public GraphTraversal< S , E > Group (string sideEffectKey) { var args = new List<object> { sideEffectKey }; Bytecode.AddStep("group", args); return Wrap< S , E >(this); } /// <summary> /// Adds the group step to this <see cref="GraphTraversal{SType, EType}" />. /// </summary> public GraphTraversal< S , IDictionary<K, V> > Group<K, V> () { var args = new List<object> { }; Bytecode.AddStep("group", args); return Wrap< S , IDictionary<K, V> >(this); } {code} I can publish my feature branch for this in case anyone wants to put some time into this. > Gremlin.Net: Generate completely type-safe methods > -------------------------------------------------- > > Key: TINKERPOP-1752 > URL: https://issues.apache.org/jira/browse/TINKERPOP-1752 > Project: TinkerPop > Issue Type: Improvement > Components: language-variant > Affects Versions: 3.2.5 > Reporter: Florian Hockmann > Priority: Minor > > Currently the generated traversal methods in Gremlin.Net take {{params > object[] args}} as an argument which allows the user to provide an arbitrary > number of arguments with any type. While this makes the generation rather > simple, it doesn't tell the user which arguments are actually valid so users > can submit completely invalid traversals like: > {code} > g.V(1).AddE(1234, "invalidArgument2").Next() > {code} > Type-safe methods could also use the original argument names to tell users > something about what kind of values the methods expect. Consider for example > the following method signatures for the C# step {{AddE}} that are basically a > 1:1 representation of the original Java {{addE}} step: > {code} > public GraphTraversal< S , Edge > AddE (Direction direction, string > firstVertexKeyOrEdgeLabel, string edgeLabelOrSecondVertexKey, params object[] > propertyKeyValues); > public GraphTraversal< S , Edge > AddE (string edgeLabel); > {code} > Implementing this should make TINKERPOP-1725 obsolete and also resolve > TINKERPOP-1751. -- This message was sent by Atlassian JIRA (v6.4.14#64029)