Interop: Marshaling af object til COM Variant?
I VS 2003 har jeg lavet en COM wrapper til en COM dll.I denne COM dll findes en Sub der har signaturen:
Sub Assign(ByVal FieldData As Variant)
I min managed dll (som VS har lavet) giver det følgende metode:
public void Assign(ref object FieldData)
Mit problem er at Variant kan være flere forskellige typer (f.esk Integer, string, boolean osv.). Lige meget hvad jeg sender med som object (også noget som jeg har fået retur fra COM, og sender tilbage igen), giver en COMException og jeg får en fejl med typeuoverensstemmelse.
Hvordan kan jeg marshale mit object som f.esk. en boolean, når det sendes fra managed code til COM???
BTW: Den modsatte vej virker fint, altså hvis jeg bruger COM dll'ens Get og så for en variant tilbage, der i managed code er et object, som jeg så kan type caste til f.esk. en bool (eller string, integer osv.).