Tôi có một thể hiện của một đối tượng COM ... mà được tạo ra như thế này:Gọi phương pháp sử dụng Reflection on COM Object
Type type = TypeDelegator.GetTypeFromProgID("Broker.Application");
Object application = Activator.CreateInstance(type);
Khi tôi cố gắng gọi một phương pháp:
type.GetMethod("RefreshAll").Invoke(application, null);
- >type.GetMethod("RefreshAll")
trả về null
. Khi tôi cố gắng để có được tất cả các phương pháp với type.GetMethods()
, chỉ có các phương pháp:
- GetLifetimeService
- InitializeLifetimeService
- CreateObjRef
- ToString
- Equals
- GetHashCode
- GetType
Phương thức RefreshAll ở đâu? Và làm thế nào tôi có thể gọi nó?
Mặc dù một câu trả lời tốt vào thời điểm đó, C# 4 làm cho nó dễ dàng hơn để thực hiện COM-interop qua 'từ khóa dynamic' dưới đây – MickyD
Chú ý, đến từ sử dụng 'dynamic' trong công cụ của tôi https : //github.com/awaescher/RepoZ Tôi phát hiện rò rỉ bộ nhớ nặng với nó. Tôi chuyển sang câu trả lời từ Nathan W để sửa lỗi đó! Xem thêm tại đây: https://stackoverflow.com/questions/33080252/memory-overflow-having-an-increasing-number-of-microsoft-csharp-runtimebinder-s/34123315 – Waescher
Xem các nhận xét khác về câu trả lời của MickyD về cách đối phó với vấn đề này ... – Waescher