Tout, j'essaie d'accéder à un .NET dll enregistré comme un objet COM avec PowerBuilder 10. Je continue à courir dans les problèmes où les objets .NET retournent des listes..NET DLL dans PowerBuilder (COM) problème avec les listes
J'ai construit une classe très simple pour une preuve de concept, et pour mieux expliquer ce que je suis en train de rencontrer. Voir ci-dessous:
.NET:
public class ListsArrays
{
public int[] GetArray()
{
int[] array = new int[3];
array[0] = 1;
array[1] = 10;
array[2] = 100;
return array;
}
public List<int> GetList()
{
List<int> list = new List<int>();
list.Add(3);
list.Add(33);
list.Add(333);
return list;
}
public int[] GetListArray()
{
List<int> list = new List<int>();
list.Add(3);
list.Add(33);
list.Add(333);
return list.ToArray();
}
}
PowerBuilder:
Integer ls_array[]
Integer obj_return, ID, netVal
String FullName
OleObject lo_dotnetobject
OleObject lo_Value
lo_Value = Create OleObject
lo_dotnetobject = Create OleObject
obj_return = lo_dotnetobject.ConnectToNewObject("XXX.ListsArrays")
//This is the tricky part
ls_array = lo_dotnetobject.GetArray() // WORKS (1)
ls_array = lo_dotnetobject.GetList().ToArray() // DOES NOT WORK (2)
lo_dotnetobject.GetList().CopyTo(ls_array) // DOES NOT WORK (3)
ls_array = lo_dotnetobject.GetListArray() // WORKS (4)
Pour chaque partie que « NE FONCTIONNE PAS » Je reçois ce message d'erreur:
« Fonction/événement sans valeur de retour utilisée dans l'expression à la ligne "
Évidemment, je pourrais juste enrouler mon assembly .NET, et renvoyer un tableau pour chaque liste, mais j'aimerais pouvoir manipuler des listes sur le côté de PowerBuilder sans encapsuler le .NET. Quelqu'un a-t-il une idée? Le fait que (4) fonctionne et (2) ne fonctionne pas me rend un peu fou.
Merci.