Florian Hockmann created TINKERPOP-1901:

             Summary: Enable usage of enums in more steps in Gremlin.Net
                 Key: TINKERPOP-1901
                 URL: https://issues.apache.org/jira/browse/TINKERPOP-1901
             Project: TinkerPop
          Issue Type: Improvement
          Components: dotnet
    Affects Versions: 3.3.1, 3.2.7
            Reporter: Florian Hockmann

Java enums can implement interfaces and some Gremlin steps take interfaces as 
arguments that are implemented by enums like {{T}} or {{P}} in Java. However, 
C# enums can't have any methods and therefore also not implement interfaces. 
For this reason, step arguments whose type is one of those interfaces 
({{Predicate}}, {{Function}}, ...) currently have the type {{object}} in 
Gremlin.Net which makes it hard for users to know what kind of values they can 
use for these arguments.

This overload of the {{By}} step is a good example for this:
 * In Gremlin-java:
public default <V> GraphTraversal<S, E> by(final Traversal<?, ?> traversal, 
final Comparator<V> comparator)

 * In Gremlin.Net:
public GraphTraversal<S, E> By (object function, object comparator)

[~jorgebg] [suggested two possible 
for this problem:
{quote} * Use a class for T (not an enum), properties like T.Id could return 
instances of whatever interface we create for it. Given that java enums 
functionality is more comprehensive than what C# currently supports, it makes 
sense to use a class IMO.
 * Generate the offending traversal methods manually.{quote}

This message was sent by Atlassian JIRA

Reply via email to