2009-10-28 4 views
10

Existe-t-il un moyen manuel d'appeler un objet COM dans le GAC dans .NET, sans l'ajouter en tant que référence? La raison pour laquelle je demande est que je ne sais que coder en C# et que je veux appeler un objet COM .NET et teste que ses appels CMO sont visibles, mais évidemment vous ne pouvez pas ajouter un objet COM .NET à un. Assemblage NET! Comme vous devez le référencer, je me demandais si vous pouvez l'appeler si elle est enregistrée dans le GAC manuellement via le code C#?Manière manuelle d'appeler l'objet COM via .NET

Répondre

19
Type myType = Type.GetTypeFromProgID("IMyLib.MyClass"); 
object obj = Activator.CreateInstance(myType); 
object[] args = new object[2]; 
args[0] = "Hello"; 
args[1] = 3; 
myType.InvokeMember("MyMethod", BindingFlags.InvokeMethod, obj, args); 

Dans .Net 4 quelque chose comme ça

Type myType = Type.GetTypeFromProgID("IMyLib.MyClass"); 
dynamic obj = Activator.CreateInstance(myType); 
obj.MyMethod("Hello", 3); 
+0

merci u so much! – David

+0

Votre syntaxe C# 4.0 est basée sur des prototypes précoces (inédits?); cependant, je n'ai pas VS2010B2 installé pour donner la syntaxe correcte ... Je suis sûr que quelqu'un d'autre le fait. –

+0

J'ai édité le post, je n'ai pas installé vs 2010 aussi, mais comme je sais que c'est une bonne façon de le faire –