You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@ignite.apache.org by "Nikolai Kulagin (Jira)" <ji...@apache.org> on 2020/05/25 17:42:00 UTC

[jira] [Comment Edited] (IGNITE-12823) .NET: Service method with user type array parameter can't be found

    [ https://issues.apache.org/jira/browse/IGNITE-12823?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17116157#comment-17116157 ] 

Nikolai Kulagin edited comment on IGNITE-12823 at 5/25/20, 5:41 PM:
--------------------------------------------------------------------

[~ptupitsyn], Yes, your decision is better. Unfortunately, I did not think of this. But I came up with one crazy case (maybe he is not alone) in which your decision needs to be fixed.

As I understand it, do you take a ticket to yourself?
{code:java}
Assert.AreEqual("PlatformComputeBinarizable2", prx.TestBinarizableArray(new[] {10, 11, 12}.Select(x => new PlatformComputeBinarizable2 {Field = x}).ToArray()));

....

            public string TestBinarizableArray(object[] x)
            {
                if (x.GetType() == typeof(PlatformComputeBinarizable[]))
                    return "PlatformComputeBinarizable";
                if (x.GetType() == typeof(PlatformComputeBinarizable2[]))
                    return "PlatformComputeBinarizable2";
                    
                return "object";
            }
...

Expected string length 27 but was 6. Strings differ at index 0.
  Expected: "PlatformComputeBinarizable2"
  But was:  "object"
{code}
 


was (Author: zzzadruga):
[~ptupitsyn], Yes, your decision is better. Unfortunately, I did not think of this. But I came up with one crazy case (maybe he is not alone) in which your decision needs to be finalized.

As I understand it, do you take a ticket to yourself?
{code:java}
Assert.AreEqual("PlatformComputeBinarizable2", prx.TestBinarizableArray(new[] {10, 11, 12}.Select(x => new PlatformComputeBinarizable2 {Field = x}).ToArray()));

....

            public string TestBinarizableArray(object[] x)
            {
                if (x.GetType() == typeof(PlatformComputeBinarizable[]))
                    return "PlatformComputeBinarizable";
                if (x.GetType() == typeof(PlatformComputeBinarizable2[]))
                    return "PlatformComputeBinarizable2";
                    
                return "object";
            }
...

Expected string length 27 but was 6. Strings differ at index 0.
  Expected: "PlatformComputeBinarizable2"
  But was:  "object"
{code}
 

> .NET: Service method with user type array parameter can't be found
> ------------------------------------------------------------------
>
>                 Key: IGNITE-12823
>                 URL: https://issues.apache.org/jira/browse/IGNITE-12823
>             Project: Ignite
>          Issue Type: Bug
>          Components: platforms
>            Reporter: Alexey Kukushkin
>            Assignee: Nikolai Kulagin
>            Priority: Major
>              Labels: .NET, sbcf
>         Attachments: ignite-12823-vs-2.8.patch
>
>          Time Spent: 10m
>  Remaining Estimate: 0h
>
> *+Setup+*
>  * Ignite Java service with a method having an array of user types as a parameters, for example, caclulate(Parameter[] params)
> *+Actions+*
>  * .NET client calls the Ignite Java service, for example, ignite.GetServices().GetServiceProxy<ICalculator>().calculate(new[] \{new Parameter()});
> *+Expected+*
>  * The service method is called
> *+Actual+*
>  * Exception "Could not find proxy method 'calculate' in class ICalculator"
> *+Workaround+*
>  * Replace array of user types with array of objects in the service methods signatures, for example, caclulate(Object[] params)



--
This message was sent by Atlassian Jira
(v8.3.4#803005)