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: {code:java} public default <V> GraphTraversal<S, E> by(final Traversal<?, ?> traversal, final Comparator<V> comparator) {code} * In Gremlin.Net: {code} public GraphTraversal<S, E> By (object function, object comparator) {code} [~jorgebg] [suggested two possible solutions|https://github.com/apache/tinkerpop/pull/792#discussion_r167847541] 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 (v7.6.3#76005)