2011-09-15 4 views
2

J'essaie de comprendre comment passer un tableau multi-dimensionnel de float à partir d'un code IronPython vers une bibliothèque C#.Passer un tableau de IronPython à la bibliothèque C#

Voici le code C# Je suis en train d'appeler (Ceci est une fonction est une classe de bibliothèque, je suis importer dans mon code IronPython):

public void ShowMessage(double[,] values) 

C'est mon code IronPython:

import clr 
clr.AddReferenceToFile(r"DisplayLib.dll") 
from DisplayLib import Display 

display = Display() 

a = [[1.2, 1.3, 1.4, 1.5], 
    [2.2, 2.3, 2.4, 2.5]] 

display.ShowMessage(a) 

Je reçois l'exception suivante: "Array attendu [float], got list" puis j'ai essayé de convertir le tableau en un tuple mais cela ne fonctionnait que pour un tableau 1D.

Des suggestions sur comment faire ceci?

Répondre

5

Vous devez créer une instance d'un tableau .NET bidimensionnel. Vous ne pouvez pas utiliser les listes Python à la place des tableaux. Une limitation malheureuse.

Vous pouvez essayer quelque chose comme ceci:

from System import Array 

data = [[1.2, 1.3, 1.4, 1.5], 
     [2.2, 2.3, 2.4, 2.5]] 
# assuming all rows will have the same length 
a = Array.CreateInstance(float, len(data), len(data[0])) 
for i, row in enumerate(data): 
    for j, col in enumerate(row): 
     a[i, j] = col 
display.ShowMessage(a); 
Questions connexes