CCW - array of objects
Hejsa,Jeg eksperimenterer lidt med at lave en ccw til en .net komponent (strong key, regasm, gacutil etc ).
Komponenten skal kaldes via latebinding (vbscript/asp).
Jeg har lidt problemer med at få returneret et array af objekter fra komponenten.
Lad os sige jeg har en "Circle"-class.
I .net komponenten er der en funktion ala:
public Circle[] getCircles(){
Circle one = new Circle();
one.Radius = 1;
Circle two = new Circle();
two.Radius = 2;
Circle[] circles = new Circle[] {one,two};
return circles;
}
Kalder jeg denne funktion fra vbscript får jeg godt nok et array
tilbage:
set dotnetcom = CreateObject("Foo.Bar")
myArray = dotnetcom.getCircles
msgbox isArray( myArray )
***isArray melder true, så langt så godt
***UBound etc passer også med forventede antal elementer
myCircle = myArray(1)
***Her går det galt. Ovenstående melder type mismatch
Nåh ja. vbscript kan jo kun håndtere variant typen.
Så roder lidt med noget MarshalAs i .net:
[return:MarshalAs(UnmanagedType.SafeArray, SafeArraySubType=VarEnum.VT_VARIANT)]
public object[] getCircles(){
Circle one = new Circle();
one.Radius = 1;
Circle two = new Circle();
two.Radius = 2;
object[] circles = new object[] {one,two};
return circles;
}
Tilbage i vb kan jeg nu godt få lov at:
myCircle = myArray(1)
og
msgbox typename( myCircle ) melder object
Men her sidder jeg så fast igen.
myCircle.Radius melder "object expected"
Det længeste jeg er nået er at få returneret et array af strings fra min .net komponent.
Nogen der har nogle fifs til hvordan jeg får et array af objects returneret?