DotNet variable with value NULL

ACaignie
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
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
-
0
-
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
0 -
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.0 -
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
0
Categories
- All Categories
- 73 General
- 73 Announcements
- 66.6K Microsoft Dynamics NAV
- 18.7K NAV Three Tier
- 38.4K NAV/Navision Classic Client
- 3.6K Navision Attain
- 2.4K Navision Financials
- 116 Navision DOS
- 851 Navision e-Commerce
- 1K NAV Tips & Tricks
- 772 NAV Dutch speaking only
- 617 NAV Courses, Exams & Certification
- 2K Microsoft Dynamics-Other
- 1.5K Dynamics AX
- 320 Dynamics CRM
- 111 Dynamics GP
- 10 Dynamics SL
- 1.5K Other
- 990 SQL General
- 383 SQL Performance
- 34 SQL Tips & Tricks
- 35 Design Patterns (General & Best Practices)
- 1 Architectural Patterns
- 10 Design Patterns
- 5 Implementation Patterns
- 53 3rd Party Products, Services & Events
- 1.6K General
- 1.1K General Chat
- 1.6K Website
- 83 Testing
- 1.2K Download section
- 23 How Tos section
- 252 Feedback
- 12 NAV TechDays 2013 Sessions
- 13 NAV TechDays 2012 Sessions