2009-10-28 9 views
10

Czy istnieje ręczny sposób wywoływania obiektu COM w GAC w .NET, bez dodawania go jako odniesienia?Ręczny sposób wywoływania obiektu COM za pośrednictwem .NET

Powód, dla którego pytam, to tylko wiem, jak kodować w C# i chcę wywołać obiekt .NET COM i testuje, że jego wywołania CMO są widoczne, ale oczywiście nie można dodać obiektu COM .NET do. Montaż NET! Ponieważ musisz się do niego odwoływać, więc zastanawiałem się czy możesz go wywołać, jeśli jest on zarejestrowany w GAC ręcznie przez kod C#?

Odpowiedz

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

w .NET 4 coś takiego

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

thank u so much! – David

+0

Twoja składnia C# 4.0 jest oparta na wczesnych (niepublikowanych?) Prototypach; jednak nie mam zainstalowanego VS2010B2, aby podać poprawną składnię ... Jestem pewna, że ​​ktoś inny to robi. –

+0

Edytowałem post, nie mam również zainstalowanego vs 2010, ale jak wiem, jest to poprawny sposób, aby to zrobić –

Powiązane problemy