tengo una instancia de un objeto COM ... que se crea de esta manera:método Invoke Reflexión sobre el uso de objetos COM
Type type = TypeDelegator.GetTypeFromProgID("Broker.Application");
Object application = Activator.CreateInstance(type);
Cuando trato de invocar un método:
type.GetMethod("RefreshAll").Invoke(application, null);
- >type.GetMethod("RefreshAll")
devuelve null
. Cuando intento para obtener todos los métodos con type.GetMethods()
, sólo hay estos métodos:
- GetLifetimeService
- InitializeLifetimeService
- CreateObjRef
- ToString
- es igual a
- GetHashCode
- GetType
¿Dónde está el método RefreshAll? ¿Y cómo puedo invocarlo?
Aunque una respuesta bien en el momento, C# 4 hace que sea mucho más fácil de realizar COM-interoperabilidad a través de la palabra clave 'dynamic' continuación – MickyD
Atención, que viene de usar' dynamic' en mi herramienta https : //github.com/awaescher/RepoZ Descubrí fuertes pérdidas de memoria con él. ¡Cambié a la respuesta de Nathan W para arreglar eso! Vea más aquí: https://stackoverflow.com/questions/33080252/memory-overflow-having-an-increasing-number-of-microsoft-csharp-runtimebinder-s/34123315 – Waescher
Vea los otros comentarios en la respuesta de MickyD sobre cómo lidiar con el problema ... – Waescher