Ручной способ вызова COM-объекта через .NET
-
06-07-2019 - |
Вопрос
Существует ли ручной способ вызова COM-объекта в GAC в .NET без добавления его в качестве ссылки?
Причина, по которой я спрашиваю, состоит в том, что я знаю только, как кодировать на C # и хочу вызывать COM-объект .NET и проверяет, видимы ли его вызовы CMO, но, очевидно, вы не можете добавить COM-объект .NET в .NET сборка! Как вы должны сослаться на это, так что мне было интересно, можете ли вы назвать его, если он зарегистрирован в GAC вручную через код C #?
Решение
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);
Не связан с StackOverflow