I'm going to guess that you are using LV 7.x, because I think you have run into a bug that was fixed in 8.0. The problem is that LV doesn't recognize the byte array parameter correctly, due to the in/out nature, and doesn't automatically map it to a LV byte array. However, if you go to <vi.lib>/platform/dotnet.llb, you'll find a VI called To Object. You pass in a regular LV array of bytes and out the other side comes a .NET object reference. You then use To More Specific to convert it to the .NET array of bytes and pass that in.
On the other side, use To Variant, again in the dotnet.llb, to covert the .NET reference to a LV variant, and then the Variant To Data to get the LV array.
It is a bit of work, but not bad. The main problem is that it isn't easy to define a .NET array of doubles as the input to the To More Specific since it doesn't exist in mscorlib. The easiest thing to do is find a method that takes an input of byte[] (such as System.IO.BinaryWriter, and the Write() method) and use that to create the refnum constant. You can't use your method, because it is a byte[]&.
Or, you could upgrade to LV 8. That is easier, but obviously means spending money, and your project may not allow it.