Open
Description
Library/API/IoT binding
Interpreter or MDP
Visual Studio version
.NET nanoFramework extension version
Target name(s)
All
Firmware version
Nanoclr.exe 1.1.6
Device capabilities
No response
Description
The .NET and nanoFramework results for FieldInfo.FieldType and Type.GetElementType() are different for a field that has an array as type:
public class Test
{
public byte[] data;
}
public void TestMethod()
{
Test test = new() { data = [] };
Console.WriteLine(test.data.GetType().FullName);
// returns "System.Byte[]"
Console.WriteLine(test.data.GetType().GetElementType()?.FullName ?? "-");
// returns "System.Byte"
Console.WriteLine(typeof(Test).GetField("data").FieldType.FullName);
// returns "System.Array" - in .NET this is also "System.Byte[]"
Console.WriteLine(typeof(Test).GetField("data").FieldType.GetElementType()?.FullName ?? "-");
// returns "-" - in .NET this is "System.Byte"
}
This makes it impossible to use reflection to assign an array, e.g., in deserialization code.
How to reproduce
Run TestMethod()
on any target.
Expected behaviour
No response
Screenshots
No response
Sample project or code
No response
Aditional information
No response