Have you tried the UnmanagedType.LPArray attribute?
[MarshalAs(UnmanagedType.LPArray, SizeConst = 8)]
public int[] data1
The example here uses it:
Default Marshaling for Arrays[
^] - search for "When a C-style array is imported" and look at the example under "Managed Signature"