Forums Neueste Beiträge
 

COM-InterOp und params (ParamArray von VB6)

07/06/2008 - 14:07 von Holger Boskugel | Report spam
Hallo,

wer von Euch hat vielleicht einen Lösungsansatz oder
Lösung für folgendes Problem:

Ich möchte analog VB6 ein ParamArray als Parameter-
übergabe in C# definieren und es via COM-InterOp
verfügbar machen. Leider ist mir das bisher nicht gelungen.

Die Methode soll keinen oder eine beliebige Anzahl
von Parametern zulassen.

C#:

void MyMethod(params object[] in_Parameters) {
//...
}


VB6:

Sub MyMethod(ParamArray in_Parameters As Variant())
'...
End Sub

Ein Mix von Ansàtzen (theoretisch) ist :

void MyMethod([System.Runtime.InteropServices.Optional
,
System.Runtime.InteropServices.DefaultParameterValue(new object[]{})
, System.Runtime.InteropServices.MarshalAs(

System.Runtime.InteropServices.UnmanagedType.SafeArray
, SafeArraySubType System.Runtime.InteropServices.VarEnum.VT_VARIANT)]
params object[] in_Parameters) {
//...
}

In der oben gezeigten Version bekomme ich jedoch
System.Runtime.InteropServices.DefaultParameterValue(new object[]{})
nicht zum Laufen mit dem Compiler, da werden wohl nur einfache Typen
unterstützt oder wie werden Array-Konstanten dort definiert?
System.Runtime.InteropServices.DefaultParameterValue(null)
ist auch kein gangbarer Weg.

Wer kann helfen?


Viele Grüße

Holger
 

Lesen sie die antworten

#1 Frank Dzaebel
07/06/2008 - 17:52 | Warnen spam
Hallo Holger,

wer von Euch hat vielleicht einen Lösungsansatz oder
Lösung für folgendes Problem:
Ich möchte analog VB6 ein ParamArray als Parameter-
übergabe in C# definieren und es via COM-InterOp
verfügbar machen. Leider ist mir das bisher nicht gelungen.



MyLib.MyClass mc = new MyLib.MyClass();
object[] myParameters = new object[] { "eins", "zwei" };
mc.MyMethod(ref myParameters);


ciao Frank
Dipl.Inf. Frank Dzaebel [MCP/MVP C#]
http://Dzaebel.NET

Ähnliche fragen