Здравствуйте, Аноним, Вы писали:
А>http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpguide/html/cpconDefaultMarshalingForArrays.asp
А>Оно?
А>
данное сообщение получено с www.gotdotnet.ru
А>ссылка на оригинальное сообщение
Не совсем. Там не говорится, как передать многомерный массив.
Есть пример про передачу одномерного.
Но продлема в том, что при
просмотре полученной сборки при импортировании
ildasm.exe я увидел:
instance void Set_Data([in] class [mscorlib]System.Array marshal( safearray float64) point,
[in] class [mscorlib]System.Array marshal( safearray float64) cluster) runtime managed internalcall
{
}
Т.е. есть System.Array
Но если
написать (делаем массив 3х3)
CKMeans.ICKMeansMethod ck = new CKMeans.CCKMeansMethodClass();
double [][] info = new double[3][];
info[0] = new double[] {1, 2, 3};
info[1] = new double[] {1, 2, 3};
info[2] = new double[] {1, 2, 3};
ck.Set_Data(info, null);
То будет Exception:
System.Runtime.InteropServices.SafeArrayTypeMismatchException: Specified array was not of the expected type.
at CKMeans.CCKMeansMethodClass.Set_Data(Array point, Array cluster)