पर प्रतिबिंब का उपयोग कर मैं एक COM वस्तु ... जो इस तरह बनाई गई है का एक उदाहरण है:आह्वान विधि COM ऑब्जेक्ट
Type type = TypeDelegator.GetTypeFromProgID("Broker.Application");
Object application = Activator.CreateInstance(type);
जब मैं एक विधि को लागू करने की कोशिश:
type.GetMethod("RefreshAll").Invoke(application, null);
- >type.GetMethod("RefreshAll")
null
देता है। जब मैं type.GetMethods()
साथ सभी तरीकों प्राप्त करने की कोशिश, वहाँ केवल इन तरीकों है:
- GetLifetimeService
- InitializeLifetimeService
- CreateObjRef
- ToString
- बराबर
- GetHashCode
- GetType
ताज़ा करें सभी विधि कहां है? और मैं इसे कैसे बुला सकता हूं?
this.application.GetType().InvokeMember("RefreshAll", BindingFlags.InvokeMethod, null, this.application, null);
मैं का उपयोग करता है COM तो यह आप के लिए ठीक से काम करना चाहिए पुराने परियोजना में इस तरह से उपयोग कर रहा हूँ:
हालांकि समय में एक अच्छा जवाब है, # 4 ग यह बहुत आसान – MickyD
ध्यान दें नीचे 'dynamic' कीवर्ड के माध्यम से COM-इंटरॉप प्रदर्शन करने के लिए,' dynamic' मेरी उपकरण https में उपयोग करने से आने वाले बनाता है : //github.com/awaescher/RepoZ मैंने इसके साथ भारी मेमोरी लीक की खोज की। मैंने इसे ठीक करने के लिए नाथन डब्ल्यू के जवाब पर स्विच किया! यहां और देखें: https://stackoverflow.com/questions/33080252/memory-overflow-having-an-increasing-number-of-microsoft-csharp-runtimebinder-s/34123315 – Waescher
मिकी डी के जवाब पर अन्य टिप्पणियां देखें कि कैसे इस मुद्दे से निपटें ... – Waescher