latebinding an COM objekt

11/02/2008 - 17:20 von Peter Wagner | Report spam
Hallo NG,
ich versuche eine methode aus einem COM objekt mit latebinding und out
argumenten (ParameterModifier) aufzurufen, bekomme allerdings folgende
exception:

System.Reflection.TargetInvocationException: Exception has been thrown by
the target of an invocation. > System.Runtime.InteropServices.COMException
(0x80020005): Typkonflikt. (Exception from HRESULT: 0x80020005
(DISP_E_TYPEMISMATCH))


das habe ich probiert:

SolidEdgeFileProperties.PropertySets _propertySets = null;

object[] parameters = null;
int MemberCount = 0;
Array MemberNames = null;

parameters = new object[] { file, MemberCount, MemberNames };

try
{
Type t = Type.GetTypeFromProgID("SolidEdge.FileProperties");
_propertySets = Activator.CreateInstance(t) as
SolidEdgeFileProperties.PropertySets;


if (_propertySets != null)
{
ParameterModifier arrPmods = new ParameterModifier(3);
arrPmods[0] = false; //filename in
arrPmods[1] = true; //count out
arrPmods[2] = true; //MemberNames out

ParameterModifier[] mods = { arrPmods };

_propertySets.GetType().InvokeMember(
"GetFamilyOfAssemblyMemberNames",
BindingFlags.InvokeMethod, null, _propertySets,
parameters, mods, null, null); // hier exception

MemberCount = (int)parameters[1];
MemberNames = parameters[2] as Array;

}
}

hat jemand eine Idee was ich falsch mache?

Gruß,
Peter
 

Lesen sie die antworten

#1 Joachim Fuchs
11/02/2008 - 21:48 | Warnen spam
Hallo Peter,

warum programmierst Du die COM-Zugriffe nicht einfach mit VB.NET und bindest
die DLL im C#-Programm ein? Latebinding mit COM làsst sich in VB wesentlich
einfacher lösen.

Gruß
Joachim

Dr. Joachim Fuchs - Autor - Dozent - Softwarearchitekt
MCT - MCAD
http://www.fuechse-online.de/beruflich/index.html -
http://vbnet.codebooks.de

Ähnliche fragen