2009-10-28 2 views
10

Есть ли способ вызова COM-объекта в GAC в .NET без добавления его в качестве ссылки?Ручной способ вызова COM-объекта через .NET.

Причина, по которой я спрашиваю, это только знать, как закодировать на C# и вы хотите вызвать объект .NET COM и проверить, что его вызовы CMO видны, но, очевидно, вы не можете добавить .NET COM-объект в a. NET сборка! Поскольку вы должны ссылаться на него, поэтому мне было интересно, можете ли вы назвать его, если его зарегистрировать в GAC вручную с помощью кода C#?

ответ

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); 

В .Net 4 что-то вроде этого

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

поблагодарить у так много! – David

+0

Ваш синтаксис C# 4.0 основан на ранних (неизданных?) Прототипах; однако у меня нет установленного VS2010B2, чтобы дать правильный синтаксис ... Я уверен, что кто-то еще это делает. –

+0

Я отредактировал сообщение, у меня также нет vs 2010, но, как я знаю, это правильный способ сделать это –

Смежные вопросы