Ho un'istanza di un oggetto COM ... che si crea in questo modo:metodo Invoke utilizzando la riflessione su oggetti COM
Type type = TypeDelegator.GetTypeFromProgID("Broker.Application");
Object application = Activator.CreateInstance(type);
Quando provo a invocare un metodo:
type.GetMethod("RefreshAll").Invoke(application, null);
- >type.GetMethod("RefreshAll")
restituisce null
. Quando cerco di ottenere tutti i metodi con type.GetMethods()
, c'è solo questi metodi:
- GetLifetimeService
- InitializeLifetimeService
- CreateObjRef
- ToString
- Equals
- GetHashCode
- GetType
Dove si trova il metodo RefreshAll? E come posso invocarlo?
Anche se una risposta bene, al momento, C# 4 rende molto più facile per eseguire COM-interoperabilità tramite il dynamic' parola chiave 'sotto – MickyD
Attenzione, provenienti da usando' dynamic' nel mio strumento https : //github.com/awaescher/RepoZ Ho scoperto pesanti perdite di memoria con esso. Sono passato alla risposta di Nathan W per risolverlo! Vedi di più qui: https://stackoverflow.com/questions/33080252/memory-overflow-having-an-increasing-number-of-microsoft-csharp-runtimebinder-s/34123315 – Waescher
Vedere gli altri commenti sulla risposta di MickyD su come affrontare il problema ... – Waescher