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
0
Answers
Check if this can help https://forum.mibuso.com/discussion/comment/251517
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
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.
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