[
https://issues.apache.org/jira/browse/TINKERPOP-1901?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16395114#comment-16395114
]
ASF GitHub Bot commented on TINKERPOP-1901:
-------------------------------------------
Github user jorgebay commented on a diff in the pull request:
https://github.com/apache/tinkerpop/pull/815#discussion_r173769540
--- Diff: gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Cardinality.cs
---
@@ -26,11 +26,16 @@ namespace Gremlin.Net.Process.Traversal
{
#pragma warning disable 1591
- public enum Cardinality
+ public class Cardinality : EnumWrapper
{
- List,
- Set,
- Single
+ private Cardinality(string enumValue)
+ : base("Cardinality", enumValue)
+ {
+ }
+
+ public static Cardinality List => new Cardinality("list");
+ public static Cardinality Set => new Cardinality("set");
--- End diff --
`"\n\t\t"` creates this weird layout as we use 4 spaces for indentation
instead of tabs.
We can use either `"\n", followed by 8 spaces` or avoid invoking `join()`
and call `.each()` on the template itself.
> 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.2.7, 3.3.1
> Reporter: Florian Hockmann
> Assignee: Florian Hockmann
> Priority: Minor
> Fix For: 3.2.8, 3.3.2
>
>
> 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)