Options

DotNet variable with value NULL

ACaignieACaignie Member Posts: 91
Hello,
I'm having a strange issue with a dotnet variable with value NULL.
From an external web service we get info in NAV (2017 CU9), the type of variables we get are "Nullable Single". As NAV cannot handle these (I think) we have created a C# DLL (.Net framework 4.5) that converts the Nullable Single to a decimal value. This works fine if the Nullable Single has a value, but if it is NULL then NAV throws this error:
A call to MyDLL.ConvertNullableSingleToDouble failed with this message: The type of one or more arguments does not match the method's parameter type.

I have checked the type of the variable, and if it is not null the GETDOTNETTYPE() returns "System.Single". However if is NULL then GETDOTNETTYPE() returns "Microsoft.Dynamics.Nav.Runtime.NavDotNet".
This seems very strange behaviour, as the type should not change depending on its value.

Is there any way to solve this, besides checking with ISNULL? There are hundreds of calls to the C# function (including other nullable conversions), so checking for ISNULL everywhere would be a huge job.
PS: we already used this in NAV 2009 and this worked fine.


Kind regards,
Andy

Answers

  • Options
    NavNabNavNab Member Posts: 181
  • Options
    ACaignieACaignie Member Posts: 91
    NavNab wrote: »

    Hi,
    Thanks, but no, this is not a solution as I'm not missing any elements. I'm hoping on a solution in .Net. I tried overloading my function with NavDotNet as parameter, but this doesn't seem to work

    Andy
  • Options
    raggersraggers Member Posts: 2
    hi,
    would be nice if you have posted c# code. If Nullable Single is null then Nullable Single.HasValue should return false ....you shld be able to handle.
  • Options
    ACaignieACaignie Member Posts: 91
    Hi,

    This is the C# code, it is only a 'convert':

    public double ConvertNullableSingleToDouble(Single? value)
    {
    return Convert.ToDouble(value);
    }

    The problem is the function is not even executed, as instead of Single the type of variable is Microsoft.Dynamics.Nav.Runtime.NavDotNet. I tried to overload the function, but this doesn't work.
    I am now changing the code in NAV to add an 'not isnull' before the call, but I wanted to avoid this as it is quite a bit of work
Sign In or Register to comment.